Files
Client/GameTools/EffectEditor/EffectPage.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

4792 lines
144 KiB
C++
Raw Permalink Blame History

// EffectPage.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "EffectPage.h"
#include "MainFrm.h"
#include "EffectEditorDoc.h"
#include "EffectEditorView.h"
#include "Z3DMath.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CParticlePage, CPropertyPage)
IMPLEMENT_DYNCREATE(CBillboardPage, CPropertyPage)
IMPLEMENT_DYNCREATE(CCylinderPage, CPropertyPage)
IMPLEMENT_DYNCREATE(CPlanePage, CPropertyPage)
/////////////////////////////////////////////////////////////////////////////
// CParticlePage property page
CParticlePage::CParticlePage() : CPropertyPage(CParticlePage::IDD)
{
//{{AFX_DATA_INIT(CParticlePage)
m_strTexture = _T("");
m_dwStartFrame = 1;
m_dwEndFrame = 30;
m_fRotation = 0.0f;
m_fTexSpeed = 1.0f;
m_fLifetime = 25.0f;
m_fLifetimeSeed = 0.0f;
m_fPowerSeed = 0.0f;
m_fRadius = 0.0f;
m_fVolX = 0.0f;
m_fVolY = 0.0f;
m_fVolZ = 0.0f;
m_fInnerRadius = 0.0f;
m_bContinuous = FALSE;
//}}AFX_DATA_INIT
}
CParticlePage::~CParticlePage()
{
}
void CParticlePage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CParticlePage)
DDX_Control(pDX, IDC_CBSRC, m_cbSrc);
DDX_Control(pDX, IDC_CBDEST, m_cbDest);
DDX_Control(pDX, IDC_CBADDRESSV, m_cbAddressV);
DDX_Control(pDX, IDC_CBADDRESSU, m_cbAddressU);
DDX_Control(pDX, IDC_WIDTH, m_edtWidth);
DDX_Control(pDX, IDC_SCEALPHA, m_edtSceAlpha);
DDX_Control(pDX, IDC_POWER, m_edtPower);
DDX_Control(pDX, IDC_HEIGHT, m_edtHeight);
DDX_Control(pDX, IDC_EFORCEZ, m_edtEForceZ);
DDX_Control(pDX, IDC_EFORCEY, m_edtEForceY);
DDX_Control(pDX, IDC_EFORCEX, m_edtEForceX);
DDX_Control(pDX, IDC_DIRZ, m_edtDirZ);
DDX_Control(pDX, IDC_DIRY, m_edtDirY);
DDX_Control(pDX, IDC_DIRX, m_edtDirX);
DDX_Control(pDX, IDC_COLR, m_edtColR);
DDX_Control(pDX, IDC_COLG, m_edtColG);
DDX_Control(pDX, IDC_COLB, m_edtColB);
DDX_Control(pDX, IDC_CENZ, m_edtCenZ);
DDX_Control(pDX, IDC_CENY, m_edtCenY);
DDX_Control(pDX, IDC_CENX, m_edtCenX);
DDX_Control(pDX, IDC_AXISZ, m_edtAxisZ);
DDX_Control(pDX, IDC_AXISY, m_edtAxisY);
DDX_Control(pDX, IDC_AXISX, m_edtAxisX);
DDX_Control(pDX, IDC_ANGLE, m_edtAngle);
DDX_Control(pDX, IDC_AMOUNT, m_edtAmount);
DDX_Control(pDX, IDC_ALPHA, m_edtAlpha);
DDX_Text(pDX, IDC_TEXTURE, m_strTexture);
DDX_Text(pDX, IDC_STARTFRAME, m_dwStartFrame);
DDX_Text(pDX, IDC_ENDFRAME, m_dwEndFrame);
DDX_Text(pDX, IDC_ROTATION, m_fRotation);
DDX_Text(pDX, IDC_TEXSPEED, m_fTexSpeed);
DDX_Text(pDX, IDC_LIFETIME, m_fLifetime);
DDX_Text(pDX, IDC_LIFETIMESEED, m_fLifetimeSeed);
DDX_Text(pDX, IDC_POWERSEED, m_fPowerSeed);
DDX_Text(pDX, IDC_RADIUS, m_fRadius);
DDX_Text(pDX, IDC_VOLX, m_fVolX);
DDX_Text(pDX, IDC_VOLY, m_fVolY);
DDX_Text(pDX, IDC_VOLZ, m_fVolZ);
DDX_Text(pDX, IDC_INNERRADIUS, m_fInnerRadius);
DDX_Check(pDX, IDC_CONTINUOUS, m_bContinuous);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CParticlePage, CPropertyPage)
//{{AFX_MSG_MAP(CParticlePage)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_NOVOLUME, OnNovolume)
ON_BN_CLICKED(IDC_CIRCLEVOLUME, OnCirclevolume)
ON_BN_CLICKED(IDC_SQUAREVOLUME, OnSquarevolume)
ON_BN_CLICKED(IDC_AUTO, OnAuto)
ON_BN_CLICKED(IDC_CONTINUOUS, OnContinuous)
ON_CBN_SELCHANGE(IDC_CBSRC, OnSelchangeCbsrc)
ON_CBN_SELCHANGE(IDC_CBDEST, OnSelchangeCbdest)
ON_CBN_SELCHANGE(IDC_CBADDRESSU, OnSelchangeCbaddressu)
ON_CBN_SELCHANGE(IDC_CBADDRESSV, OnSelchangeCbaddressv)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBillboardPage property page
CBillboardPage::CBillboardPage() : CPropertyPage(CBillboardPage::IDD)
{
//{{AFX_DATA_INIT(CBillboardPage)
m_strTexture = _T("");
m_dwEndFrame = 30;
m_dwStartFrame = 1;
m_bAxisAligned = FALSE;
//}}AFX_DATA_INIT
}
CBillboardPage::~CBillboardPage()
{
}
void CBillboardPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBillboardPage)
DDX_Control(pDX, IDC_CBSRC, m_cbSrc);
DDX_Control(pDX, IDC_CBDEST, m_cbDest);
DDX_Control(pDX, IDC_CBADDRESSV, m_cbAddressV);
DDX_Control(pDX, IDC_CBADDRESSU, m_cbAddressU);
DDX_Control(pDX, IDC_TEXFRAME, m_edtTexFrame);
DDX_Control(pDX, IDC_COLR, m_edtColR);
DDX_Control(pDX, IDC_COLG, m_edtColG);
DDX_Control(pDX, IDC_COLB, m_edtColB);
DDX_Control(pDX, IDC_ALPHA, m_edtAlpha);
DDX_Control(pDX, IDC_CENZ, m_edtCenZ);
DDX_Control(pDX, IDC_CENY, m_edtCenY);
DDX_Control(pDX, IDC_CENX, m_edtCenX);
DDX_Control(pDX, IDC_AXISZ, m_edtAxisZ);
DDX_Control(pDX, IDC_AXISY, m_edtAxisY);
DDX_Control(pDX, IDC_AXISX, m_edtAxisX);
DDX_Control(pDX, IDC_TILEV, m_edtTileV);
DDX_Control(pDX, IDC_TILEU, m_edtTileU);
DDX_Control(pDX, IDC_STARTV, m_edtStartV);
DDX_Control(pDX, IDC_STARTU, m_edtStartU);
DDX_Control(pDX, IDC_WIDTH, m_edtWidth);
DDX_Control(pDX, IDC_HEIGHT, m_edtHeight);
DDX_Text(pDX, IDC_TEXTURE, m_strTexture);
DDX_Text(pDX, IDC_ENDFRAME, m_dwEndFrame);
DDX_Text(pDX, IDC_STARTFRAME, m_dwStartFrame);
DDX_Check(pDX, IDC_AXISALIGNED, m_bAxisAligned);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBillboardPage, CPropertyPage)
//{{AFX_MSG_MAP(CBillboardPage)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_TEXSTATIC, OnTexstatic)
ON_BN_CLICKED(IDC_TEXANI, OnTexani)
ON_BN_CLICKED(IDC_AXISALIGNED, OnAxisaligned)
ON_CBN_SELCHANGE(IDC_CBSRC, OnSelchangeCbsrc)
ON_CBN_SELCHANGE(IDC_CBDEST, OnSelchangeCbdest)
ON_CBN_SELCHANGE(IDC_CBADDRESSU, OnSelchangeCbaddressu)
ON_CBN_SELCHANGE(IDC_CBADDRESSV, OnSelchangeCbaddressv)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCylinderPage property page
CCylinderPage::CCylinderPage() : CPropertyPage(CCylinderPage::IDD)
{
//{{AFX_DATA_INIT(CCylinderPage)
m_dwEndFrame = 30;
m_dwSidePlane = 3;
m_dwStartFrame = 1;
m_strTexture = _T("");
//}}AFX_DATA_INIT
}
CCylinderPage::~CCylinderPage()
{
}
void CCylinderPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCylinderPage)
DDX_Control(pDX, IDC_CBADDRESSV, m_cbAddressV);
DDX_Control(pDX, IDC_CBSRC, m_cbSrc);
DDX_Control(pDX, IDC_CBDEST, m_cbDest);
DDX_Control(pDX, IDC_CBADDRESSU, m_cbAddressU);
DDX_Control(pDX, IDC_UPPERRADIUS, m_edtUpperRadius);
DDX_Control(pDX, IDC_UPPERHEIGHT, m_edtUpperHeight);
DDX_Control(pDX, IDC_TILEV, m_edtTileV);
DDX_Control(pDX, IDC_TILEU, m_edtTileU);
DDX_Control(pDX, IDC_TEXFRAME, m_edtTexFrame);
DDX_Control(pDX, IDC_STARTV, m_edtStartV);
DDX_Control(pDX, IDC_STARTU, m_edtStartU);
DDX_Control(pDX, IDC_LOWERRADIUS, m_edtLowerRadius);
DDX_Control(pDX, IDC_LOWERHEIGHT, m_edtLowerHeight);
DDX_Control(pDX, IDC_COLR, m_edtColR);
DDX_Control(pDX, IDC_COLG, m_edtColG);
DDX_Control(pDX, IDC_COLB, m_edtColB);
DDX_Control(pDX, IDC_CENZ, m_edtCenZ);
DDX_Control(pDX, IDC_CENY, m_edtCenY);
DDX_Control(pDX, IDC_CENX, m_edtCenX);
DDX_Control(pDX, IDC_AXISZ, m_edtAxisZ);
DDX_Control(pDX, IDC_AXISY, m_edtAxisY);
DDX_Control(pDX, IDC_AXISX, m_edtAxisX);
DDX_Control(pDX, IDC_ALPHA, m_edtAlpha);
DDX_Text(pDX, IDC_ENDFRAME, m_dwEndFrame);
DDX_Text(pDX, IDC_SIDEPLANE, m_dwSidePlane);
DDX_Text(pDX, IDC_STARTFRAME, m_dwStartFrame);
DDX_Text(pDX, IDC_TEXTURE, m_strTexture);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCylinderPage, CPropertyPage)
//{{AFX_MSG_MAP(CCylinderPage)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_TEXSTATIC, OnTexstatic)
ON_BN_CLICKED(IDC_TEXANI, OnTexani)
ON_CBN_SELCHANGE(IDC_CBSRC, OnSelchangeCbsrc)
ON_CBN_SELCHANGE(IDC_CBDEST, OnSelchangeCbdest)
ON_CBN_SELCHANGE(IDC_CBADDRESSU, OnSelchangeCbaddressu)
ON_CBN_SELCHANGE(IDC_CBADDRESSV, OnSelchangeCbaddressv)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPlanePage property page
CPlanePage::CPlanePage() : CPropertyPage(CPlanePage::IDD)
{
//{{AFX_DATA_INIT(CPlanePage)
m_strTexture = _T("");
m_dwEndFrame = 30;
m_dwStartFrame = 1;
//}}AFX_DATA_INIT
}
CPlanePage::~CPlanePage()
{
}
void CPlanePage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPlanePage)
DDX_Control(pDX, IDC_CBSRC, m_cbSrc);
DDX_Control(pDX, IDC_CBDEST, m_cbDest);
DDX_Control(pDX, IDC_CBADDRESSV, m_cbAddressV);
DDX_Control(pDX, IDC_CBADDRESSU, m_cbAddressU);
DDX_Control(pDX, IDC_WIDTH, m_edtWidth);
DDX_Control(pDX, IDC_TILEV, m_edtTileV);
DDX_Control(pDX, IDC_TILEU, m_edtTileU);
DDX_Control(pDX, IDC_TEXFRAME, m_edtTexFrame);
DDX_Control(pDX, IDC_STARTV, m_edtStartV);
DDX_Control(pDX, IDC_STARTU, m_edtStartU);
DDX_Control(pDX, IDC_HEIGHT, m_edtHeight);
DDX_Control(pDX, IDC_COLR, m_edtColR);
DDX_Control(pDX, IDC_COLG, m_edtColG);
DDX_Control(pDX, IDC_COLB, m_edtColB);
DDX_Control(pDX, IDC_CENZ, m_edtCenZ);
DDX_Control(pDX, IDC_CENY, m_edtCenY);
DDX_Control(pDX, IDC_CENX, m_edtCenX);
DDX_Control(pDX, IDC_AXISZ, m_edtAxisZ);
DDX_Control(pDX, IDC_AXISY, m_edtAxisY);
DDX_Control(pDX, IDC_AXISX, m_edtAxisX);
DDX_Control(pDX, IDC_ALPHA, m_edtAlpha);
DDX_Text(pDX, IDC_TEXTURE, m_strTexture);
DDX_Text(pDX, IDC_ENDFRAME, m_dwEndFrame);
DDX_Text(pDX, IDC_STARTFRAME, m_dwStartFrame);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPlanePage, CPropertyPage)
//{{AFX_MSG_MAP(CPlanePage)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_TEXSTATIC, OnTexstatic)
ON_BN_CLICKED(IDC_TEXANI, OnTexani)
ON_CBN_SELCHANGE(IDC_CBSRC, OnSelchangeCbsrc)
ON_CBN_SELCHANGE(IDC_CBDEST, OnSelchangeCbdest)
ON_CBN_SELCHANGE(IDC_CBADDRESSU, OnSelchangeCbaddressu)
ON_CBN_SELCHANGE(IDC_CBADDRESSV, OnSelchangeCbaddressv)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CPlanePage::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
CX3DEffectEditPlane *pPlane;
pPlane = new CX3DEffectEditPlane;
unsigned long dwStartFrame = m_dwStartFrame - 1;
unsigned long dwEndFrame = m_dwEndFrame - 1;
pPlane->Create(dwStartFrame, dwEndFrame);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEffect(pPlane);
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEditObject(pPlane);
{
quaternion quatAxis;
quatAxis.Identity();
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
pPlane->LoadTexture(m_strTexture.GetBuffer(m_strTexture.GetLength()));
SetKey(dwStartFrame, pPlane->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
SetKey(dwStartFrame, pPlane->m_lstWidth, (float)m_edtWidth);
SetKey(dwStartFrame, pPlane->m_lstHeight, (float)m_edtHeight);
SetKey(dwStartFrame, pPlane->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
SetKey(dwStartFrame, pPlane->m_lstAxis, quatAxis);
SetKey(dwStartFrame, pPlane->m_lstStartU, (float)m_edtStartU);
SetKey(dwStartFrame, pPlane->m_lstStartV, (float)m_edtStartV);
SetKey(dwStartFrame, pPlane->m_lstTileU, (float)m_edtTileU);
SetKey(dwStartFrame, pPlane->m_lstTileV, (float)m_edtTileV);
SetKey(dwStartFrame, pPlane->m_lstTexFrame, (float)m_edtTexFrame);
pPlane->CreateBuffer();
pPlane->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
pPlane->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
pPlane->SetEffectKind(EFFECT_PLANE);
SetKeyInfo();
// mf->m_KeyBar.m_lpKeySheet->m_Page1.m_sldKeyFrame.SetTic(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame);
}
}
void CPlanePage::OnBrowse()
{
// TODO: Add your control notification handler code here
char strFilter[50] = "DDS <20><><EFBFBD><EFBFBD>(*.dds)|*.dds||";
CFileDialog dlg(TRUE, "*.dds", "", OFN_HIDEREADONLY | OFN_LONGNAMES, strFilter);
if(dlg.DoModal() == IDOK)
{
m_strTexture = dlg.GetPathName();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pPlane) pPlane->LoadTexture(m_strTexture);
UpdateData(FALSE);
}
}
void CPlanePage::OnDelete()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect != 0xFFFFFFFF)
{
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEffect(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEditObject(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
}
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = 0xFFFFFFFF;
InitValue();
UpdateData(FALSE);
}
BOOL CPlanePage::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
switch(::GetDlgCtrlID(pMsg->hwnd))
{
case IDC_TEXTURE:
if(pPlane)
{
pPlane->LoadTexture(m_strTexture);
}
break;
case IDC_CENX:
case IDC_CENY:
case IDC_CENZ:
if(pPlane)
{
vector3 vecData;
if(!strcmp(m_edtCenX, "") || !strcmp(m_edtCenY, "") || !strcmp(m_edtCenZ, ""))
{
if(pPlane->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 0, vecData);
pPlane->m_lstCenter.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 0, vecData);
SetKey(dwFrame, pPlane->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
} else
{
SetKey(dwFrame, pPlane->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_AXISX:
case IDC_AXISY:
case IDC_AXISZ:
if(pPlane)
{
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quaternion quatAxis;
quatAxis.Identity();
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
quaternion quatData;
if(!strcmp(m_edtAxisX, "") || !strcmp(m_edtAxisY, "") || !strcmp(m_edtAxisZ, ""))
{
if(pPlane->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 1, quatData);
pPlane->m_lstAxis.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 1, quatData);
SetKey(dwFrame, pPlane->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 1, quatAxis);
} else
{
SetKey(dwFrame, pPlane->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 1, quatAxis);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_ALPHA:
case IDC_COLR:
case IDC_COLG:
case IDC_COLB:
if(pPlane)
{
color lData;
if(!strcmp(m_edtColR, "") || !strcmp(m_edtColG, "") || !strcmp(m_edtColB, "") || !strcmp(m_edtAlpha, ""))
{
if(pPlane->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 2, lData);
pPlane->m_lstColor.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 2, lData);
SetKey(dwFrame, pPlane->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
} else
{
SetKey(dwFrame, pPlane->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_WIDTH:
if(pPlane)
{
float fData;
if(!strcmp(m_edtWidth, ""))
{
if(pPlane->m_lstWidth.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 3, fData);
pPlane->m_lstWidth.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstWidth.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 3, fData);
SetKey(dwFrame, pPlane->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 3, (float)m_edtWidth);
} else
{
SetKey(dwFrame, pPlane->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 3, (float)m_edtWidth);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_HEIGHT:
if(pPlane)
{
float fData;
if(!strcmp(m_edtHeight, ""))
{
if(pPlane->m_lstHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 4, fData);
pPlane->m_lstHeight.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 4, fData);
SetKey(dwFrame, pPlane->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 4, (float)m_edtHeight);
} else
{
SetKey(dwFrame, pPlane->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 4, (float)m_edtHeight);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TEXFRAME:
if(pPlane)
{
float fData;
if(!strcmp(m_edtTexFrame, ""))
{
if(pPlane->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 9, fData);
pPlane->m_lstTexFrame.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 9, fData);
SetKey(dwFrame, pPlane->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 9, (float)m_edtTexFrame);
} else
{
SetKey(dwFrame, pPlane->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 9, (float)m_edtTexFrame);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTU:
if(pPlane)
{
float fData;
if(!strcmp(m_edtStartU, ""))
{
if(pPlane->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 7, fData);
pPlane->m_lstStartU.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 7, fData);
SetKey(dwFrame, pPlane->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 7, (float)m_edtStartU);
} else
{
SetKey(dwFrame, pPlane->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 7, (float)m_edtStartU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTV:
if(pPlane)
{
float fData;
if(!strcmp(m_edtStartV, ""))
{
if(pPlane->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 8, fData);
pPlane->m_lstStartV.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 8, fData);
SetKey(dwFrame, pPlane->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 8, (float)m_edtStartV);
} else
{
SetKey(dwFrame, pPlane->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 8, (float)m_edtStartV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEU:
if(pPlane)
{
float fData;
if(!strcmp(m_edtTileU, ""))
{
if(pPlane->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 5, fData);
pPlane->m_lstTileU.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 5, fData);
SetKey(dwFrame, pPlane->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 5, (float)m_edtTileU);
} else
{
SetKey(dwFrame, pPlane->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 5, (float)m_edtTileU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEV:
if(pPlane)
{
float fData;
if(!strcmp(m_edtTileV, ""))
{
if(pPlane->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_DELKEY, 6, fData);
pPlane->m_lstTileV.Erase(dwFrame);
break;
}
}
if(pPlane->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_OLDDATA, 6, fData);
SetKey(dwFrame, pPlane->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_NEWDATA, 6, (float)m_edtTileV);
} else
{
SetKey(dwFrame, pPlane->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(3, pPlane->GetUID(), dwFrame, COMMAND_INSERT, 6, (float)m_edtTileV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTFRAME:
if(pPlane)
{
// pPlane->EditFrame(dwFrame, m_dwStartFrame);
pPlane->SetStartFrame(m_dwStartFrame);
if(pPlane->GetEndFrame() < m_dwStartFrame)
{
pPlane->SetEndFrame(m_dwStartFrame);
m_dwEndFrame = m_dwStartFrame;
UpdateData(FALSE);
}
}
break;
case IDC_ENDFRAME:
if(pPlane)
{
if(pPlane->GetStartFrame() > m_dwEndFrame)
{
m_dwEndFrame = pPlane->GetStartFrame();
UpdateData(FALSE);
}
pPlane->SetEndFrame(m_dwEndFrame);
}
break;
}
SetKeyInfo();
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CPlanePage::SetKeyInfo()
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
quaternion quatTemp;
if(pPlane)
{
pPlane->Interpolation(dwFrame);
m_strTexture = pPlane->GetTextureFileName();
m_edtAlpha = pPlane->GetAlpha();
m_edtColB = pPlane->GetBColor();
m_edtColG = pPlane->GetGColor();
m_edtColR = pPlane->GetRColor();
if(pPlane->m_lstColor.Find(dwFrame))
{
m_edtAlpha.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColB.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColG.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColR.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAlpha.DisableBkColor();
m_edtColB.DisableBkColor();
m_edtColG.DisableBkColor();
m_edtColR.DisableBkColor();
}
m_dwEndFrame = pPlane->GetEndFrame() + 1;
m_dwStartFrame = pPlane->GetStartFrame() + 1;
m_edtCenX = pPlane->GetCenter().x;
m_edtCenY = pPlane->GetCenter().y;
m_edtCenZ = pPlane->GetCenter().z;
if(pPlane->m_lstCenter.Find(dwFrame))
{
m_edtCenX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtCenX.DisableBkColor();
m_edtCenY.DisableBkColor();
m_edtCenZ.DisableBkColor();
}
quatTemp = Eul_FromQuat(pPlane->GetAxis(), EulOrdXZYs);
m_edtAxisX = (quatTemp.x * 180.0f) / FLOAT_PHI;
m_edtAxisY = (-quatTemp.z * 180.0f) / FLOAT_PHI;
m_edtAxisZ = (-quatTemp.y * 180.0f) / FLOAT_PHI;
if(pPlane->m_lstAxis.Find(dwFrame))
{
m_edtAxisX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAxisX.DisableBkColor();
m_edtAxisY.DisableBkColor();
m_edtAxisZ.DisableBkColor();
}
m_edtHeight = pPlane->GetHeight();
if(pPlane->m_lstHeight.Find(dwFrame))
{
m_edtHeight.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtHeight.DisableBkColor();
}
m_edtWidth = pPlane->GetWidth();
if(pPlane->m_lstWidth.Find(dwFrame))
{
m_edtWidth.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtWidth.DisableBkColor();
}
if(m_bTexStatic)
{
m_edtStartU = pPlane->GetStartU();
if(pPlane->m_lstStartU.Find(dwFrame))
{
m_edtStartU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartU.DisableBkColor();
}
m_edtStartV = pPlane->GetStartV();
if(pPlane->m_lstStartV.Find(dwFrame))
{
m_edtStartV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartV.DisableBkColor();
}
m_edtTileU = pPlane->GetTileU();
if(pPlane->m_lstTileU.Find(dwFrame))
{
m_edtTileU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileU.DisableBkColor();
}
m_edtTileV = pPlane->GetTileV();
if(pPlane->m_lstTileV.Find(dwFrame))
{
m_edtTileV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileV.DisableBkColor();
}
}
if(m_bTexAni)
{
m_edtTexFrame = pPlane->GetTexFrame();
if(pPlane->m_lstTexFrame.Find(dwFrame))
{
m_edtTexFrame.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTexFrame.DisableBkColor();
}
}
m_cbSrc.SetCurSel(pPlane->GetSrcBlending() - D3DBLEND_ZERO);
m_cbDest.SetCurSel(pPlane->GetDestBlending() - D3DBLEND_ZERO);
UpdateData(FALSE);
Invalidate(FALSE);
}
}
void CPlanePage::OnTexstatic()
{
// TODO: Add your control notification handler code here
m_bTexStatic = TRUE;
m_bTexAni = FALSE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pPlane)
{
pPlane->SetTexAni(m_bTexAni);
// pPlane->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
m_edtTexFrame.DisableBkColor();
SetKeyInfo();
}
void CPlanePage::OnTexani()
{
// TODO: Add your control notification handler code here
m_bTexStatic = FALSE;
m_bTexAni = TRUE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pPlane)
{
pPlane->SetTexAni(m_bTexAni);
// pPlane->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
m_edtStartU.DisableBkColor();
m_edtStartV.DisableBkColor();
m_edtTileU.DisableBkColor();
m_edtTileV.DisableBkColor();
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
SetKeyInfo();
}
BOOL CPlanePage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_cbSrc.AddString("ZERO");
m_cbSrc.AddString("ONE");
m_cbSrc.AddString("SRCCOLOR");
m_cbSrc.AddString("INVSRCCOLOR");
m_cbSrc.AddString("SRCALPHA");
m_cbSrc.AddString("INVSRCALPHA");
m_cbSrc.AddString("DESTALPHA");
m_cbSrc.AddString("INVDESTALPHA");
m_cbSrc.AddString("DESTCOLOR");
m_cbSrc.AddString("INVDESTCOLOR");
m_cbSrc.AddString("SRCALPHASAT");
m_cbSrc.AddString("BOTHSRCALPHA");
m_cbSrc.AddString("BOTHINVSRCALPHA");
m_cbSrc.SetCurSel(4);
m_cbDest.AddString("ZERO");
m_cbDest.AddString("ONE");
m_cbDest.AddString("SRCCOLOR");
m_cbDest.AddString("INVSRCCOLOR");
m_cbDest.AddString("SRCALPHA");
m_cbDest.AddString("INVSRCALPHA");
m_cbDest.AddString("DESTALPHA");
m_cbDest.AddString("INVDESTALPHA");
m_cbDest.AddString("DESTCOLOR");
m_cbDest.AddString("INVDESTCOLOR");
m_cbDest.AddString("SRCALPHASAT");
m_cbDest.AddString("BOTHSRCALPHA");
m_cbDest.AddString("BOTHINVSRCALPHA");
m_cbDest.SetCurSel(1);
InitValue();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CParticlePage::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
CX3DEffectEditParticle *pParticle;
pParticle = new CX3DEffectEditParticle;
unsigned long dwStartFrame = m_dwStartFrame - 1;
unsigned long dwEndFrame = m_dwEndFrame - 1;
pParticle->Create(dwStartFrame, dwEndFrame);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEffect(pParticle);
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEditObject(pParticle);
{
quaternion quatAxis, quatDir;
quatAxis.Identity();
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
quatDir.Identity();
// m_fDirX = m_fDirX - (((unsigned long)(m_fDirX / 360)) * 360.0f);
// m_fDirY = m_fDirY - (((unsigned long)(m_fDirY / 360)) * 360.0f);
// m_fDirZ = m_fDirZ - (((unsigned long)(m_fDirZ / 360)) * 360.0f);
quatDir.Pitch(FLOAT_DEG((float)m_edtDirX));
quatDir.Yaw(FLOAT_DEG((float)m_edtDirY));
quatDir.Roll(FLOAT_DEG((float)m_edtDirZ));
pParticle->LoadTexture(m_strTexture.GetBuffer(m_strTexture.GetLength()));
SetKey(dwStartFrame, pParticle->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
SetKey(dwStartFrame, pParticle->m_lstEForce, vector3(m_edtEForceX, m_edtEForceY, m_edtEForceZ));
SetKey(dwStartFrame, pParticle->m_lstAxis, quatAxis);
SetKey(dwStartFrame, pParticle->m_lstDirection, quatDir);
SetKey(dwStartFrame, pParticle->m_lstPower, (float)m_edtPower);
SetKey(dwStartFrame, pParticle->m_lstAngle, FLOAT_DEG((float)m_edtAngle));
SetKey(dwStartFrame, pParticle->m_lstAlpha, (float)((float)m_edtAlpha / 255.0f));
pParticle->SetLifetime(m_fLifetime);
pParticle->SetLifetimeSeed(m_fLifetimeSeed);
pParticle->SetPowerSeed(m_fPowerSeed);
if(m_bNone) pParticle->SetVolumeNone();
if(m_bSquare) pParticle->SetVolumeSquare(m_fVolX, m_fVolY, m_fVolZ);
if(m_bCircle) pParticle->SetVolumeCircle(m_fRadius, m_fInnerRadius);
// if(m_bScenario) pParticle->SetSpawnScenario();
// if(m_bAuto) pParticle->SetSpawnAuto(m_fAutoTime);
if(m_bContinuous)
{
for(unsigned long i = dwStartFrame; i <= dwEndFrame; i++)
{
SetKey(i, pParticle->m_lstAmount, (float)m_edtAmount);
}
} else
{
SetKey(dwStartFrame, pParticle->m_lstAmount, (float)m_edtAmount);
}
pParticle->SetRotation(FLOAT_DEG((m_fRotation - (((unsigned long)(m_fRotation / 360)) * 360.0f))));
SetKey(0, pParticle->m_lstWidth, (float)m_edtWidth);
SetKey(0, pParticle->m_lstHeight, (float)m_edtHeight);
SetKey(0, pParticle->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtSceAlpha));
pParticle->SetTexSpeed((16 * m_fTexSpeed) / 100.0f);
pParticle->CreateBuffer();
pParticle->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
pParticle->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
pParticle->SetEffectKind(EFFECT_PARTICLE);
// mf->m_KeyBar.m_lpKeySheet->m_Page1.m_sldKeyFrame.SetTic(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame);
}
}
void CParticlePage::OnDelete()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect != 0xFFFFFFFF)
{
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEffect(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEditObject(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
}
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = 0xFFFFFFFF;
InitValue();
UpdateData(FALSE);
}
void CParticlePage::OnBrowse()
{
// TODO: Add your control notification handler code here
char strFilter[50] = "DDS <20><><EFBFBD><EFBFBD>(*.dds)|*.dds||";
CFileDialog dlg(TRUE, "*.dds", "", OFN_HIDEREADONLY | OFN_LONGNAMES, strFilter);
if(dlg.DoModal() == IDOK)
{
CString strTemp;
strTemp = dlg.GetPathName();
char *tm = strrchr(strTemp.LockBuffer(),'\\');
tm++;
m_strTexture.Format("%s",tm);
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle) pParticle->LoadTexture(m_strTexture);
UpdateData(FALSE);
}
}
void CParticlePage::SetKeyInfo()
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
quaternion quatTemp;
if(pParticle)
{
/* m_cAlpha = pBillboard->GetAlpha();
m_cColB = pBillboard->GetBColor();
m_cColG = pBillboard->GetGColor();
m_cColR = pBillboard->GetRColor();
if(pBillboard->m_lstColor.Find(dwFrame))
{
((CEdit *)(GetDlgItem(IDC_ALPHA)))->ModifyStyleEx(0, WS_EX_DLGMODALFRAME);
((CEdit *)(GetDlgItem(IDC_COLR)))->ModifyStyleEx(0, WS_EX_DLGMODALFRAME);
((CEdit *)(GetDlgItem(IDC_COLG)))->ModifyStyleEx(0, WS_EX_DLGMODALFRAME);
((CEdit *)(GetDlgItem(IDC_COLB)))->ModifyStyleEx(0, WS_EX_DLGMODALFRAME);
} else
{
((CEdit *)(GetDlgItem(IDC_ALPHA)))->ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);
((CEdit *)(GetDlgItem(IDC_COLR)))->ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);
((CEdit *)(GetDlgItem(IDC_COLG)))->ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);
((CEdit *)(GetDlgItem(IDC_COLB)))->ModifyStyleEx(WS_EX_DLGMODALFRAME, 0);
}*/
pParticle->Interpolation(dwFrame);
m_strTexture = pParticle->GetTextureFileName();
m_dwEndFrame = pParticle->GetEndFrame();
m_dwStartFrame = pParticle->GetStartFrame();
m_edtCenX = pParticle->GetCenter().x;
m_edtCenY = pParticle->GetCenter().y;
m_edtCenZ = pParticle->GetCenter().z;
if(pParticle->m_lstCenter.Find(dwFrame))
{
m_edtCenX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtCenX.DisableBkColor();
m_edtCenY.DisableBkColor();
m_edtCenZ.DisableBkColor();
}
quatTemp = Eul_FromQuat(pParticle->GetAxis(), EulOrdXZYs);
m_edtAxisX = (quatTemp.x * 180.0f) / FLOAT_PHI;
m_edtAxisY = (-quatTemp.z * 180.0f) / FLOAT_PHI;
m_edtAxisZ = (-quatTemp.y * 180.0f) / FLOAT_PHI;
if(pParticle->m_lstAxis.Find(dwFrame))
{
m_edtAxisX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAxisX.DisableBkColor();
m_edtAxisY.DisableBkColor();
m_edtAxisZ.DisableBkColor();
}
m_edtEForceX = pParticle->GetEForce().x;
m_edtEForceY = pParticle->GetEForce().y;
m_edtEForceZ = pParticle->GetEForce().z;
if(pParticle->m_lstEForce.Find(dwFrame))
{
m_edtEForceX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtEForceY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtEForceZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtEForceX.DisableBkColor();
m_edtEForceY.DisableBkColor();
m_edtEForceZ.DisableBkColor();
}
m_edtAlpha = pParticle->GetMainAlpha();
if(pParticle->m_lstAlpha.Find(dwFrame))
{
m_edtAlpha.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAlpha.DisableBkColor();
}
m_edtAmount = pParticle->GetAmount(dwFrame);
if(pParticle->m_lstAmount.Find(dwFrame))
{
m_edtAmount.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAmount.DisableBkColor();
}
m_fLifetime = pParticle->GetLifetime();
m_edtPower = pParticle->GetPower();
if(pParticle->m_lstPower.Find(dwFrame))
{
m_edtPower.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtPower.DisableBkColor();
}
m_edtAngle = pParticle->GetAngle();
if(pParticle->m_lstAngle.Find(dwFrame))
{
m_edtAngle.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAngle.DisableBkColor();
}
quatTemp = Eul_FromQuat(pParticle->GetDirection(), EulOrdXZYs);
m_edtDirX = (quatTemp.x * 180.0f) / FLOAT_PHI;
m_edtDirY = (-quatTemp.z * 180.0f) / FLOAT_PHI;
m_edtDirZ = (-quatTemp.y * 180.0f) / FLOAT_PHI;
if(pParticle->m_lstDirection.Find(dwFrame))
{
m_edtDirX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtDirY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtDirZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtDirX.DisableBkColor();
m_edtDirY.DisableBkColor();
m_edtDirZ.DisableBkColor();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned long dwSceFrame = mf->m_KeyBar.m_lpKeySheet->m_Page2.m_fPrePro - 1;
m_edtWidth = pParticle->GetWidth(dwSceFrame);
if(pParticle->m_lstWidth.Find(dwSceFrame))
{
m_edtWidth.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtWidth.DisableBkColor();
}
m_edtHeight = pParticle->GetHeight(dwSceFrame);
if(pParticle->m_lstHeight.Find(dwSceFrame))
{
m_edtHeight.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtHeight.DisableBkColor();
}
m_edtSceAlpha = pParticle->GetAlpha(dwSceFrame);
m_edtColB.SetValue(pParticle->GetBColor(dwSceFrame));
m_edtColG.SetValue(pParticle->GetGColor(dwSceFrame));
m_edtColR.SetValue(pParticle->GetRColor(dwSceFrame));
if(pParticle->m_lstColor.Find(dwSceFrame))
{
m_edtSceAlpha.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColB.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColG.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColR.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtSceAlpha.DisableBkColor();
m_edtColB.DisableBkColor();
m_edtColG.DisableBkColor();
m_edtColR.DisableBkColor();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
m_cbSrc.SetCurSel(pParticle->GetSrcBlending() - D3DBLEND_ZERO);
m_cbDest.SetCurSel(pParticle->GetDestBlending() - D3DBLEND_ZERO);
UpdateData(FALSE);
Invalidate(FALSE);
}
}
BOOL CParticlePage::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
switch(::GetDlgCtrlID(pMsg->hwnd))
{
case IDC_TEXTURE:
if(pParticle)
{
pParticle->LoadTexture(m_strTexture);
}
break;
case IDC_CENX:
case IDC_CENY:
case IDC_CENZ:
if(pParticle)
{
vector3 vecData;
if(!strcmp(m_edtCenX, "") || !strcmp(m_edtCenY, "") || !strcmp(m_edtCenZ, ""))
{
if(pParticle->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 0, vecData);
pParticle->m_lstCenter.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 0, vecData);
SetKey(dwFrame, pParticle->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
} else
{
SetKey(dwFrame, pParticle->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_POWER:
if(pParticle)
{
float fData;
if(!strcmp(m_edtPower, ""))
{
if(pParticle->m_lstPower.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 5, fData);
pParticle->m_lstPower.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstPower.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 5, fData);
SetKey(dwFrame, pParticle->m_lstPower, (float)m_edtPower);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 5, (float)m_edtPower);
} else
{
SetKey(dwFrame, pParticle->m_lstPower, (float)m_edtPower);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 5, (float)m_edtPower);
}
}
break;
case IDC_POWERSEED:
if(pParticle)
{
pParticle->SetPowerSeed(m_fPowerSeed);
}
break;
case IDC_ALPHA:
if(pParticle)
{
float fData;
if(!strcmp(m_edtAlpha, ""))
{
if(pParticle->m_lstAlpha.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 4, fData);
pParticle->m_lstAlpha.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstAlpha.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 4, fData);
SetKey(dwFrame, pParticle->m_lstAlpha, (float)((float)m_edtAlpha / 255.0f));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 4, (float)((float)m_edtAlpha / 255.0f));
} else
{
SetKey(dwFrame, pParticle->m_lstAlpha, (float)((float)m_edtAlpha / 255.0f));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 4, (float)((float)m_edtAlpha / 255.0f));
}
}
break;
case IDC_ANGLE:
if(pParticle)
{
float fData;
if(!strcmp(m_edtAngle, ""))
{
if(pParticle->m_lstAngle.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 6, fData);
pParticle->m_lstAngle.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstAngle.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 6, fData);
SetKey(dwFrame, pParticle->m_lstAngle, FLOAT_DEG((float)m_edtAngle));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 6, FLOAT_DEG((float)m_edtAngle));
} else
{
SetKey(dwFrame, pParticle->m_lstAngle, FLOAT_DEG((float)m_edtAngle));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 6, FLOAT_DEG((float)m_edtAngle));
}
}
break;
case IDC_LIFETIME:
if(pParticle)
{
pParticle->SetLifetime(m_fLifetime);
}
break;
case IDC_LIFETIMESEED:
if(pParticle)
{
pParticle->SetLifetimeSeed(m_fLifetimeSeed);
}
break;
case IDC_RADIUS:
case IDC_INNERRADIUS:
if(pParticle)
{
pParticle->SetVolumeCircle(m_fRadius, m_fInnerRadius);
}
break;
case IDC_VOLX:
case IDC_VOLY:
case IDC_VOLZ:
if(pParticle)
{
pParticle->SetVolumeSquare(m_fVolX, m_fVolY, m_fVolZ);
}
break;
/* case IDC_ALPHA:
case IDC_COLR:
case IDC_COLG:
case IDC_COLB:
if(pPlane)
{
pPlane->SetColorKey(pPlane->GetFrame(), pPlane->m_lstColor, color(m_cColR, m_cColG, m_cColB, m_cAlpha));
// pPlane->SetFrame(FLT_MAX);
}
break;
*/
case IDC_AXISX:
case IDC_AXISY:
case IDC_AXISZ:
if(pParticle)
{
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quaternion quatAxis;
quatAxis.Identity();
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
quaternion quatData;
if(!strcmp(m_edtAxisX, "") || !strcmp(m_edtAxisY, "") || !strcmp(m_edtAxisZ, ""))
{
if(pParticle->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 1, quatData);
pParticle->m_lstAxis.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 1, quatData);
SetKey(dwFrame, pParticle->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 1, quatAxis);
} else
{
SetKey(dwFrame, pParticle->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 1, quatAxis);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_DIRX:
case IDC_DIRY:
case IDC_DIRZ:
if(pParticle)
{
// m_fDirX = m_fDirX - (((unsigned long)(m_fDirX / 360)) * 360.0f);
// m_fDirY = m_fDirY - (((unsigned long)(m_fDirY / 360)) * 360.0f);
// m_fDirZ = m_fDirZ - (((unsigned long)(m_fDirZ / 360)) * 360.0f);
quaternion quatDir;
quatDir.Identity();
quatDir.Pitch(FLOAT_DEG((float)m_edtDirX));
quatDir.Yaw(FLOAT_DEG((float)m_edtDirY));
quatDir.Roll(FLOAT_DEG((float)m_edtDirZ));
quaternion quatData;
if(!strcmp(m_edtDirX, "") || !strcmp(m_edtDirY, "") || !strcmp(m_edtDirZ, ""))
{
if(pParticle->m_lstDirection.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 8, quatData);
pParticle->m_lstDirection.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstDirection.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 8, quatData);
SetKey(dwFrame, pParticle->m_lstDirection, quatDir);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 8, quatDir);
} else
{
SetKey(dwFrame, pParticle->m_lstDirection, quatDir);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 8, quatDir);
}
// pParticle->SetFrame(FLT_MAX);
}
break;
case IDC_EFORCEX:
case IDC_EFORCEY:
case IDC_EFORCEZ:
if(pParticle)
{
vector3 vecData;
if(!strcmp(m_edtEForceX, "") || !strcmp(m_edtEForceY, "") || !strcmp(m_edtEForceZ, ""))
{
if(pParticle->m_lstEForce.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 7, vecData);
pParticle->m_lstEForce.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstEForce.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 7, vecData);
SetKey(dwFrame, pParticle->m_lstEForce, vector3(m_edtEForceX, m_edtEForceY, m_edtEForceZ));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 7, vector3(m_edtEForceX, m_edtEForceY, m_edtEForceZ));
} else
{
SetKey(dwFrame, pParticle->m_lstEForce, vector3(m_edtEForceX, m_edtEForceY, m_edtEForceZ));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 7, vector3(m_edtEForceX, m_edtEForceY, m_edtEForceZ));
}
// pParticle->SetFrame(FLT_MAX);
}
break;
case IDC_AMOUNT:
if(pParticle)
{
float fData;
if(!strcmp(m_edtAmount, ""))
{
if(pParticle->m_lstAmount.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_DELKEY, 3, fData);
pParticle->m_lstAmount.Erase(dwFrame);
break;
}
}
if(pParticle->m_lstAmount.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_OLDDATA, 3, fData);
SetKey(dwFrame, pParticle->m_lstAmount, (float)m_edtAmount);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_NEWDATA, 3, (float)m_edtAmount);
} else
{
SetKey(dwFrame, pParticle->m_lstAmount, (float)m_edtAmount);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwFrame, COMMAND_INSERT, 3, (float)m_edtAmount);
}
pParticle->CreateBuffer();
// pParticle->SetFrame(FLT_MAX);
}
break;
case IDC_STARTFRAME:
if(pParticle)
{
// pParticle->EditFrame(pParticle->GetStartFrame(), m_dwStartFrame);
pParticle->SetStartFrame(m_dwStartFrame);
if(pParticle->GetEndFrame() < m_dwStartFrame)
{
pParticle->SetEndFrame(m_dwStartFrame);
m_dwEndFrame = m_dwStartFrame;
UpdateData(FALSE);
}
}
break;
case IDC_ENDFRAME:
if(pParticle)
{
if(pParticle->GetStartFrame() > m_dwEndFrame)
{
m_dwEndFrame = pParticle->GetStartFrame();
UpdateData(FALSE);
}
pParticle->SetEndFrame(m_dwEndFrame);
}
break;
case IDC_ROTATION:
if(pParticle)
{
pParticle->SetRotation(FLOAT_DEG((m_fRotation - (((unsigned long)(m_fRotation / 360)) * 360.0f))));
}
break;
case IDC_WIDTH:
if(pParticle)
{
unsigned long dwSceFrame = mf->m_KeyBar.m_lpKeySheet->m_Page2.m_fPrePro - 1;
float fData;
if(!strcmp(m_edtWidth, ""))
{
if(pParticle->m_lstWidth.Find(dwSceFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_DELKEY, 9, fData);
pParticle->m_lstWidth.Erase(dwSceFrame);
break;
}
}
if(pParticle->m_lstWidth.Find(dwSceFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_OLDDATA, 9, fData);
SetKey(dwSceFrame, pParticle->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_NEWDATA, 9, (float)m_edtWidth);
} else
{
SetKey(dwSceFrame, pParticle->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_INSERT, 9, (float)m_edtWidth);
}
}
break;
case IDC_HEIGHT:
if(pParticle)
{
unsigned long dwSceFrame = mf->m_KeyBar.m_lpKeySheet->m_Page2.m_fPrePro - 1;
float fData;
if(!strcmp(m_edtHeight, ""))
{
if(pParticle->m_lstHeight.Find(dwSceFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_DELKEY, 10, fData);
pParticle->m_lstHeight.Erase(dwSceFrame);
break;
}
}
if(pParticle->m_lstHeight.Find(dwSceFrame, fData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_OLDDATA, 10, fData);
SetKey(dwSceFrame, pParticle->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_NEWDATA, 10, (float)m_edtHeight);
} else
{
SetKey(dwSceFrame, pParticle->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_INSERT, 10, (float)m_edtHeight);
}
}
break;
case IDC_SCEALPHA:
case IDC_COLR:
case IDC_COLG:
case IDC_COLB:
if(pParticle)
{
unsigned long dwSceFrame = mf->m_KeyBar.m_lpKeySheet->m_Page2.m_fPrePro - 1;
color lData;
if(!strcmp(m_edtColR, "") || !strcmp(m_edtColG, "") || !strcmp(m_edtColB, "") || !strcmp(m_edtSceAlpha, ""))
{
if(pParticle->m_lstColor.Find(dwSceFrame, lData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_DELKEY, 2, lData);
pParticle->m_lstColor.Erase(dwSceFrame);
break;
}
}
if(pParticle->m_lstColor.Find(dwSceFrame, lData))
{
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_OLDDATA, 2, lData);
SetKey(dwSceFrame, pParticle->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtSceAlpha));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_NEWDATA, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtSceAlpha));
} else
{
SetKey(dwSceFrame, pParticle->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtSceAlpha));
g_CommandManager.AddCommand(0, pParticle->GetUID(), dwSceFrame, COMMAND_INSERT, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtSceAlpha));
}
}
break;
case IDC_TEXSPEED:
if(pParticle)
{
pParticle->SetTexSpeed((16 * m_fTexSpeed) / 100.0f);
}
break;
}
SetKeyInfo();
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CParticlePage::OnNovolume()
{
// TODO: Add your control notification handler code here
m_bNone = TRUE;
m_bSquare = FALSE;
m_bCircle = FALSE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect == NULL) return;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
pParticle->SetVolumeNone();
}
GetDlgItem(IDC_VOLX)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLY)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLZ)->EnableWindow(m_bSquare);
GetDlgItem(IDC_RADIUS)->EnableWindow(m_bCircle);
GetDlgItem(IDC_INNERRADIUS)->EnableWindow(m_bCircle);
}
void CParticlePage::OnSquarevolume()
{
// TODO: Add your control notification handler code here
m_bNone = FALSE;
m_bSquare = TRUE;
m_bCircle = FALSE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
pParticle->SetVolumeSquare(m_fVolX, m_fVolY, m_fVolZ);
}
GetDlgItem(IDC_VOLX)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLY)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLZ)->EnableWindow(m_bSquare);
GetDlgItem(IDC_RADIUS)->EnableWindow(m_bCircle);
GetDlgItem(IDC_INNERRADIUS)->EnableWindow(m_bCircle);
}
void CParticlePage::OnCirclevolume()
{
// TODO: Add your control notification handler code here
m_bNone = FALSE;
m_bSquare = FALSE;
m_bCircle = TRUE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
pParticle->SetVolumeCircle(m_fRadius, m_fInnerRadius);
}
GetDlgItem(IDC_VOLX)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLY)->EnableWindow(m_bSquare);
GetDlgItem(IDC_VOLZ)->EnableWindow(m_bSquare);
GetDlgItem(IDC_RADIUS)->EnableWindow(m_bCircle);
GetDlgItem(IDC_INNERRADIUS)->EnableWindow(m_bCircle);
}
BOOL CParticlePage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_cbSrc.AddString("ZERO");
m_cbSrc.AddString("ONE");
m_cbSrc.AddString("SRCCOLOR");
m_cbSrc.AddString("INVSRCCOLOR");
m_cbSrc.AddString("SRCALPHA");
m_cbSrc.AddString("INVSRCALPHA");
m_cbSrc.AddString("DESTALPHA");
m_cbSrc.AddString("INVDESTALPHA");
m_cbSrc.AddString("DESTCOLOR");
m_cbSrc.AddString("INVDESTCOLOR");
m_cbSrc.AddString("SRCALPHASAT");
m_cbSrc.AddString("BOTHSRCALPHA");
m_cbSrc.AddString("BOTHINVSRCALPHA");
m_cbSrc.SetCurSel(4);
m_cbDest.AddString("ZERO");
m_cbDest.AddString("ONE");
m_cbDest.AddString("SRCCOLOR");
m_cbDest.AddString("INVSRCCOLOR");
m_cbDest.AddString("SRCALPHA");
m_cbDest.AddString("INVSRCALPHA");
m_cbDest.AddString("DESTALPHA");
m_cbDest.AddString("INVDESTALPHA");
m_cbDest.AddString("DESTCOLOR");
m_cbDest.AddString("INVDESTCOLOR");
m_cbDest.AddString("SRCALPHASAT");
m_cbDest.AddString("BOTHSRCALPHA");
m_cbDest.AddString("BOTHINVSRCALPHA");
m_cbDest.SetCurSel(1);
InitValue();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//DEL void CParticlePage::OnScenario()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL m_bScenario = TRUE;
//DEL m_bAuto = FALSE;
//DEL
//DEL CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
//DEL CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
//DEL if(pParticle)
//DEL {
//DEL // pParticle->SetSpawnScenario();
//DEL }
//DEL
//DEL GetDlgItem(IDC_AUTOTIME)->EnableWindow(m_bAuto);
//DEL }
void CParticlePage::OnAuto()
{
// TODO: Add your control notification handler code here
m_bScenario = FALSE;
m_bAuto = TRUE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
UpdateData();
// pParticle->SetSpawnAuto(m_fAutoTime);
}
GetDlgItem(IDC_AUTOTIME)->EnableWindow(m_bAuto);
}
//DEL void CParticlePage::OnSpawnning()
//DEL {
//DEL // TODO: Add your control notification handler code here
//DEL
//DEL }
void CCylinderPage::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
CX3DEffectEditCylinder *pCylinder;
pCylinder = new CX3DEffectEditCylinder;
unsigned long dwStartFrame = m_dwStartFrame - 1;
unsigned long dwEndFrame = m_dwEndFrame - 1;
pCylinder->Create(dwStartFrame, dwEndFrame);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEffect(pCylinder);
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEditObject(pCylinder);
{
quaternion quatAxis;
quatAxis.Identity();
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
pCylinder->LoadTexture(m_strTexture.GetBuffer(m_strTexture.GetLength()));
SetKey(dwStartFrame, pCylinder->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
SetKey(dwStartFrame, pCylinder->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
SetKey(dwStartFrame, pCylinder->m_lstAxis, quatAxis);
SetKey(dwStartFrame, pCylinder->m_lstUpperHeight, (float)m_edtUpperHeight);
SetKey(dwStartFrame, pCylinder->m_lstUpperRadius, (float)m_edtUpperRadius);
SetKey(dwStartFrame, pCylinder->m_lstLowerHeight, (float)m_edtLowerHeight);
SetKey(dwStartFrame, pCylinder->m_lstLowerRadius, (float)m_edtLowerRadius);
SetKey(dwStartFrame, pCylinder->m_lstStartU, (float)m_edtStartU);
SetKey(dwStartFrame, pCylinder->m_lstStartV, (float)m_edtStartV);
SetKey(dwStartFrame, pCylinder->m_lstTileU, (float)m_edtTileU);
SetKey(dwStartFrame, pCylinder->m_lstTileV, (float)m_edtTileV);
SetKey(dwStartFrame, pCylinder->m_lstTexFrame, (float)m_edtTexFrame);
pCylinder->SetSidePlane(m_dwSidePlane);
pCylinder->CreateBuffer();
pCylinder->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
pCylinder->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
pCylinder->SetEffectKind(EFFECT_CYLINDER);
// mf->m_KeyBar.m_lpKeySheet->m_Page1.m_sldKeyFrame.SetTic(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame);
}
}
void CCylinderPage::OnDelete()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect != 0xFFFFFFFF)
{
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEffect(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEditObject(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
}
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = 0xFFFFFFFF;
InitValue();
UpdateData(FALSE);
}
void CCylinderPage::OnBrowse()
{
// TODO: Add your control notification handler code here
char strFilter[50] = "DDS <20><><EFBFBD><EFBFBD>(*.dds)|*.dds||";
CFileDialog dlg(TRUE, "*.dds", "", OFN_HIDEREADONLY | OFN_LONGNAMES, strFilter);
if(dlg.DoModal() == IDOK)
{
m_strTexture = dlg.GetPathName();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pCylinder) pCylinder->LoadTexture(m_strTexture);
UpdateData(FALSE);
}
}
BOOL CCylinderPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_cbSrc.AddString("ZERO");
m_cbSrc.AddString("ONE");
m_cbSrc.AddString("SRCCOLOR");
m_cbSrc.AddString("INVSRCCOLOR");
m_cbSrc.AddString("SRCALPHA");
m_cbSrc.AddString("INVSRCALPHA");
m_cbSrc.AddString("DESTALPHA");
m_cbSrc.AddString("INVDESTALPHA");
m_cbSrc.AddString("DESTCOLOR");
m_cbSrc.AddString("INVDESTCOLOR");
m_cbSrc.AddString("SRCALPHASAT");
m_cbSrc.AddString("BOTHSRCALPHA");
m_cbSrc.AddString("BOTHINVSRCALPHA");
m_cbSrc.SetCurSel(4);
m_cbDest.AddString("ZERO");
m_cbDest.AddString("ONE");
m_cbDest.AddString("SRCCOLOR");
m_cbDest.AddString("INVSRCCOLOR");
m_cbDest.AddString("SRCALPHA");
m_cbDest.AddString("INVSRCALPHA");
m_cbDest.AddString("DESTALPHA");
m_cbDest.AddString("INVDESTALPHA");
m_cbDest.AddString("DESTCOLOR");
m_cbDest.AddString("INVDESTCOLOR");
m_cbDest.AddString("SRCALPHASAT");
m_cbDest.AddString("BOTHSRCALPHA");
m_cbDest.AddString("BOTHINVSRCALPHA");
m_cbDest.SetCurSel(1);
InitValue();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCylinderPage::SetKeyInfo()
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
quaternion quatTemp;
if(pCylinder)
{
pCylinder->Interpolation(dwFrame);
m_strTexture = pCylinder->GetTextureFileName();
m_edtAlpha = pCylinder->GetAlpha();
m_edtColB = pCylinder->GetBColor();
m_edtColG = pCylinder->GetGColor();
m_edtColR = pCylinder->GetRColor();
if(pCylinder->m_lstColor.Find(dwFrame))
{
m_edtAlpha.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColB.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColG.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColR.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAlpha.DisableBkColor();
m_edtColB.DisableBkColor();
m_edtColG.DisableBkColor();
m_edtColR.DisableBkColor();
}
m_dwEndFrame = pCylinder->GetEndFrame();
m_dwStartFrame = pCylinder->GetStartFrame();
m_edtCenX = pCylinder->GetCenter().x;
m_edtCenY = pCylinder->GetCenter().y;
m_edtCenZ = pCylinder->GetCenter().z;
if(pCylinder->m_lstCenter.Find(dwFrame))
{
m_edtCenX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtCenX.DisableBkColor();
m_edtCenY.DisableBkColor();
m_edtCenZ.DisableBkColor();
}
quatTemp = Eul_FromQuat(pCylinder->GetAxis(), EulOrdXZYs);
m_edtAxisX = (quatTemp.x * 180.0f) / FLOAT_PHI;
m_edtAxisY = (-quatTemp.z * 180.0f) / FLOAT_PHI;
m_edtAxisZ = (-quatTemp.y * 180.0f) / FLOAT_PHI;
if(pCylinder->m_lstAxis.Find(dwFrame))
{
m_edtAxisX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAxisX.DisableBkColor();
m_edtAxisY.DisableBkColor();
m_edtAxisZ.DisableBkColor();
}
m_edtUpperHeight = pCylinder->GetUpperHeight();
if(pCylinder->m_lstUpperHeight.Find(dwFrame))
{
m_edtUpperHeight.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtUpperHeight.DisableBkColor();
}
m_edtUpperRadius = pCylinder->GetUpperRadius();
if(pCylinder->m_lstUpperRadius.Find(dwFrame))
{
m_edtUpperRadius.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtUpperRadius.DisableBkColor();
}
m_edtLowerHeight = pCylinder->GetLowerHeight();
if(pCylinder->m_lstLowerHeight.Find(dwFrame))
{
m_edtLowerHeight.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtLowerHeight.DisableBkColor();
}
m_edtLowerRadius = pCylinder->GetLowerRadius();
if(pCylinder->m_lstLowerRadius.Find(dwFrame))
{
m_edtLowerRadius.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtLowerRadius.DisableBkColor();
}
if(m_bTexStatic)
{
m_edtStartU = pCylinder->GetStartU();
if(pCylinder->m_lstStartU.Find(dwFrame))
{
m_edtStartU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartU.DisableBkColor();
}
m_edtStartV = pCylinder->GetStartV();
if(pCylinder->m_lstStartV.Find(dwFrame))
{
m_edtStartV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartV.DisableBkColor();
}
m_edtTileU = pCylinder->GetTileU();
if(pCylinder->m_lstTileU.Find(dwFrame))
{
m_edtTileU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileU.DisableBkColor();
}
m_edtTileV = pCylinder->GetTileV();
if(pCylinder->m_lstTileV.Find(dwFrame))
{
m_edtTileV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileV.DisableBkColor();
}
}
if(m_bTexAni)
{
m_edtTexFrame = pCylinder->GetTexFrame();
if(pCylinder->m_lstTexFrame.Find(dwFrame))
{
m_edtTexFrame.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTexFrame.DisableBkColor();
}
}
m_cbSrc.SetCurSel(pCylinder->GetSrcBlending() - D3DBLEND_ZERO);
m_cbDest.SetCurSel(pCylinder->GetDestBlending() - D3DBLEND_ZERO);
UpdateData(FALSE);
Invalidate(FALSE);
}
}
void CCylinderPage::OnTexstatic()
{
// TODO: Add your control notification handler code here
m_bTexStatic = TRUE;
m_bTexAni = FALSE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pCylinder)
{
pCylinder->SetTexAni(m_bTexAni);
// pCylinder->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
}
void CCylinderPage::OnTexani()
{
// TODO: Add your control notification handler code here
m_bTexStatic = FALSE;
m_bTexAni = TRUE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pCylinder)
{
pCylinder->SetTexAni(m_bTexAni);
// pCylinder->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
}
BOOL CCylinderPage::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
switch(::GetDlgCtrlID(pMsg->hwnd))
{
case IDC_TEXTURE:
if(pCylinder)
{
pCylinder->LoadTexture(m_strTexture);
}
break;
case IDC_CENX:
case IDC_CENY:
case IDC_CENZ:
if(pCylinder)
{
vector3 vecData;
if(!strcmp(m_edtCenX, "") || !strcmp(m_edtCenY, "") || !strcmp(m_edtCenZ, ""))
{
if(pCylinder->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 0, vecData);
pCylinder->m_lstCenter.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 0, vecData);
SetKey(dwFrame, pCylinder->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
} else
{
SetKey(dwFrame, pCylinder->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_AXISX:
case IDC_AXISY:
case IDC_AXISZ:
if(pCylinder)
{
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quaternion quatAxis;
quatAxis.Identity();
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
quaternion quatData;
if(!strcmp(m_edtAxisX, "") || !strcmp(m_edtAxisY, "") || !strcmp(m_edtAxisZ, ""))
{
if(pCylinder->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 1, quatData);
pCylinder->m_lstAxis.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 1, quatData);
SetKey(dwFrame, pCylinder->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 1, quatAxis);
} else
{
SetKey(dwFrame, pCylinder->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 1, quatAxis);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_ALPHA:
case IDC_COLR:
case IDC_COLG:
case IDC_COLB:
if(pCylinder)
{
color lData;
if(!strcmp(m_edtColR, "") || !strcmp(m_edtColG, "") || !strcmp(m_edtColB, "") || !strcmp(m_edtAlpha, ""))
{
if(pCylinder->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 2, lData);
pCylinder->m_lstColor.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 2, lData);
SetKey(dwFrame, pCylinder->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
} else
{
SetKey(dwFrame, pCylinder->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_SIDEPLANE:
if(pCylinder)
{
pCylinder->SetSidePlane(m_dwSidePlane);
pCylinder->CreateBuffer();
}
break;
case IDC_UPPERHEIGHT:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtUpperHeight, ""))
{
if(pCylinder->m_lstUpperHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 3, fData);
pCylinder->m_lstUpperHeight.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstUpperHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 3, fData);
SetKey(dwFrame, pCylinder->m_lstUpperHeight, (float)m_edtUpperHeight);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 3, (float)m_edtUpperHeight);
} else
{
SetKey(dwFrame, pCylinder->m_lstUpperHeight, (float)m_edtUpperHeight);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 3, (float)m_edtUpperHeight);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_UPPERRADIUS:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtUpperRadius, ""))
{
if(pCylinder->m_lstUpperRadius.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 5, fData);
pCylinder->m_lstUpperRadius.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstUpperRadius.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 5, fData);
SetKey(dwFrame, pCylinder->m_lstUpperRadius, (float)m_edtUpperRadius);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 5, (float)m_edtUpperRadius);
} else
{
SetKey(dwFrame, pCylinder->m_lstUpperRadius, (float)m_edtUpperRadius);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 5, (float)m_edtUpperRadius);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_LOWERHEIGHT:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtLowerHeight, ""))
{
if(pCylinder->m_lstLowerHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 4, fData);
pCylinder->m_lstLowerHeight.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstLowerHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 4, fData);
SetKey(dwFrame, pCylinder->m_lstLowerHeight, (float)m_edtLowerHeight);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 4, (float)m_edtLowerHeight);
} else
{
SetKey(dwFrame, pCylinder->m_lstLowerHeight, (float)m_edtLowerHeight);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 4, (float)m_edtLowerHeight);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_LOWERRADIUS:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtLowerRadius, ""))
{
if(pCylinder->m_lstLowerRadius.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 6, fData);
pCylinder->m_lstLowerRadius.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstLowerRadius.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 6, fData);
SetKey(dwFrame, pCylinder->m_lstLowerRadius, (float)m_edtLowerRadius);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 6, (float)m_edtLowerRadius);
} else
{
SetKey(dwFrame, pCylinder->m_lstLowerRadius, (float)m_edtLowerRadius);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 6, (float)m_edtLowerRadius);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TEXFRAME:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtTexFrame, ""))
{
if(pCylinder->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 11, fData);
pCylinder->m_lstTexFrame.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 11, fData);
SetKey(dwFrame, pCylinder->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 11, (float)m_edtTexFrame);
} else
{
SetKey(dwFrame, pCylinder->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 11, (float)m_edtTexFrame);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTU:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtStartU, ""))
{
if(pCylinder->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 9, fData);
pCylinder->m_lstStartU.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 9, fData);
SetKey(dwFrame, pCylinder->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 9, (float)m_edtStartU);
} else
{
SetKey(dwFrame, pCylinder->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 9, (float)m_edtStartU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTV:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtStartV, ""))
{
if(pCylinder->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 10, fData);
pCylinder->m_lstStartV.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 10, fData);
SetKey(dwFrame, pCylinder->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 10, (float)m_edtStartV);
} else
{
SetKey(dwFrame, pCylinder->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 10, (float)m_edtStartV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEU:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtTileU, ""))
{
if(pCylinder->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 7, fData);
pCylinder->m_lstTileU.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 7, fData);
SetKey(dwFrame, pCylinder->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 7, (float)m_edtTileU);
} else
{
SetKey(dwFrame, pCylinder->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 7, (float)m_edtTileU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEV:
if(pCylinder)
{
float fData;
if(!strcmp(m_edtTileV, ""))
{
if(pCylinder->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_DELKEY, 8, fData);
pCylinder->m_lstTileV.Erase(dwFrame);
break;
}
}
if(pCylinder->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_OLDDATA, 8, fData);
SetKey(dwFrame, pCylinder->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_NEWDATA, 8, (float)m_edtTileV);
} else
{
SetKey(dwFrame, pCylinder->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(2, pCylinder->GetUID(), dwFrame, COMMAND_INSERT, 8, (float)m_edtTileV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTFRAME:
if(pCylinder)
{
// pPlane->EditFrame(dwFrame, m_dwStartFrame);
pCylinder->SetStartFrame(m_dwStartFrame);
if(pCylinder->GetEndFrame() < m_dwStartFrame)
{
pCylinder->SetEndFrame(m_dwStartFrame);
m_dwEndFrame = m_dwStartFrame;
UpdateData(FALSE);
}
}
break;
case IDC_ENDFRAME:
if(pCylinder)
{
if(pCylinder->GetStartFrame() > m_dwEndFrame)
{
m_dwEndFrame = pCylinder->GetStartFrame();
UpdateData(FALSE);
}
pCylinder->SetEndFrame(m_dwEndFrame);
}
break;
}
SetKeyInfo();
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CBillboardPage::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame > m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwStartFrame)
{
m_dwStartFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
if(((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() < m_dwEndFrame)
{
m_dwEndFrame = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetMaxFrame() + 1;
}
CX3DEffectEditBillboard *pBillboard;
pBillboard = new CX3DEffectEditBillboard;
unsigned long dwStartFrame = m_dwStartFrame - 1;
unsigned long dwEndFrame = m_dwEndFrame - 1;
pBillboard->Create(dwStartFrame, dwEndFrame);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEffect(pBillboard);
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = ((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->AddEditObject(pBillboard);
{
quaternion quatAxis;
quatAxis.Identity();
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
pBillboard->LoadTexture(m_strTexture.GetBuffer(m_strTexture.GetLength()));
SetKey(dwStartFrame, pBillboard->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
SetKey(dwStartFrame, pBillboard->m_lstWidth, (float)m_edtWidth);
SetKey(dwStartFrame, pBillboard->m_lstHeight, (float)m_edtHeight);
SetKey(dwStartFrame, pBillboard->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
SetKey(dwStartFrame, pBillboard->m_lstAxis, quatAxis);
SetKey(dwStartFrame, pBillboard->m_lstStartU, (float)m_edtStartU);
SetKey(dwStartFrame, pBillboard->m_lstStartV, (float)m_edtStartV);
SetKey(dwStartFrame, pBillboard->m_lstTileU, (float)m_edtTileU);
SetKey(dwStartFrame, pBillboard->m_lstTileV, (float)m_edtTileV);
SetKey(dwStartFrame, pBillboard->m_lstTexFrame, (float)m_edtTexFrame);
pBillboard->CreateBuffer();
pBillboard->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
pBillboard->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
pBillboard->SetEffectKind(EFFECT_BILLBOARD);
pBillboard->Interpolation(dwStartFrame);
SetKeyInfo();
// mf->m_KeyBar.m_lpKeySheet->m_Page1.m_sldPoint.SetMaker(((CEffectEditorView*)mf->GetActiveView())->m_dwPreFrame);
}
}
void CBillboardPage::OnBrowse()
{
// TODO: Add your control notification handler code here
char strFilter[50] = "DDS <20><><EFBFBD><EFBFBD>(*.dds)|*.dds||";
CFileDialog dlg(TRUE, "*.dds", "", OFN_HIDEREADONLY | OFN_LONGNAMES, strFilter);
if(dlg.DoModal() == IDOK)
{
m_strTexture = dlg.GetPathName();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pBillboard) pBillboard->LoadTexture(m_strTexture);
UpdateData(FALSE);
}
}
void CBillboardPage::OnDelete()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
if(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect != 0xFFFFFFFF)
{
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEffect(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->DeleteEditObject(((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
}
((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect = 0xFFFFFFFF;
InitValue();
UpdateData(FALSE);
}
void CBillboardPage::SetKeyInfo()
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
quaternion quatTemp;
if(pBillboard)
{
pBillboard->Interpolation(dwFrame);
m_bAxisAligned = pBillboard->GetAxisAligned();
m_strTexture = pBillboard->GetTextureFileName();
m_edtAlpha = pBillboard->GetAlpha();
m_edtColB.SetValue(pBillboard->GetBColor());
m_edtColG.SetValue(pBillboard->GetGColor());
m_edtColR.SetValue(pBillboard->GetRColor());
if(pBillboard->m_lstColor.Find(dwFrame))
{
m_edtAlpha.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColB.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColG.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtColR.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAlpha.DisableBkColor();
m_edtColB.DisableBkColor();
m_edtColG.DisableBkColor();
m_edtColR.DisableBkColor();
}
m_dwEndFrame = pBillboard->GetEndFrame() + 1;
m_dwStartFrame = pBillboard->GetStartFrame() + 1;
m_edtCenX.SetValue(pBillboard->GetCenter().x);
m_edtCenY.SetValue(pBillboard->GetCenter().y);
m_edtCenZ.SetValue(pBillboard->GetCenter().z);
if(pBillboard->m_lstCenter.Find(dwFrame))
{
m_edtCenX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtCenZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtCenX.DisableBkColor();
m_edtCenY.DisableBkColor();
m_edtCenZ.DisableBkColor();
}
quatTemp = Eul_FromQuat(pBillboard->GetAxis(), EulOrdXZYs);
m_edtAxisX = (quatTemp.x * 180.0f) / FLOAT_PHI;
m_edtAxisY = (-quatTemp.z * 180.0f) / FLOAT_PHI;
m_edtAxisZ = (-quatTemp.y * 180.0f) / FLOAT_PHI;
// m_fAxisX = (quatTemp.x * 180.0f) / FLOAT_PHI;
// m_fAxisY = (quatTemp.y * 180.0f) / FLOAT_PHI;
// m_fAxisZ = (quatTemp.z * 180.0f) / FLOAT_PHI;
if(pBillboard->m_lstAxis.Find(dwFrame))
{
m_edtAxisX.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisY.SetBkColor(0x000000FF, 0x00FFFFFF);
m_edtAxisZ.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtAxisX.DisableBkColor();
m_edtAxisY.DisableBkColor();
m_edtAxisZ.DisableBkColor();
}
m_edtHeight.SetValue(pBillboard->GetHeight());
if(pBillboard->m_lstHeight.Find(dwFrame))
{
m_edtHeight.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtHeight.DisableBkColor();
}
m_edtWidth.SetValue(pBillboard->GetWidth());
if(pBillboard->m_lstWidth.Find(dwFrame))
{
m_edtWidth.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtWidth.DisableBkColor();
}
if(m_bTexStatic)
{
m_edtStartU.SetValue(pBillboard->GetStartU());
if(pBillboard->m_lstStartU.Find(dwFrame))
{
m_edtStartU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartU.DisableBkColor();
}
m_edtStartV.SetValue(pBillboard->GetStartV());
if(pBillboard->m_lstStartV.Find(dwFrame))
{
m_edtStartV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtStartV.DisableBkColor();
}
m_edtTileU.SetValue(pBillboard->GetTileU());
if(pBillboard->m_lstTileU.Find(dwFrame))
{
m_edtTileU.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileU.DisableBkColor();
}
m_edtTileV.SetValue(pBillboard->GetTileV());
if(pBillboard->m_lstTileV.Find(dwFrame))
{
m_edtTileV.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTileV.DisableBkColor();
}
}
if(m_bTexAni)
{
m_edtTexFrame.SetValue((unsigned long)pBillboard->GetTexFrame());
if(pBillboard->m_lstTexFrame.Find(dwFrame))
{
m_edtTexFrame.SetBkColor(0x000000FF, 0x00FFFFFF);
} else
{
m_edtTexFrame.DisableBkColor();
}
}
m_cbSrc.SetCurSel(pBillboard->GetSrcBlending() - D3DBLEND_ZERO);
m_cbDest.SetCurSel(pBillboard->GetDestBlending() - D3DBLEND_ZERO);
UpdateData(FALSE);
Invalidate(FALSE);
}
}
BOOL CBillboardPage::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
/* if(pMsg->message == CB_SETCURSEL)
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
switch(::GetDlgCtrlID(pMsg->hwnd))
{
case IDC_CBSRC:
pBillboard->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
break;
case IDC_CBDEST:
pBillboard->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
break;
}
}*/
if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
unsigned long dwFrame = mf->m_KeyBar.m_lpKeySheet->m_Page1.m_dwPreFrame - 1;
switch(::GetDlgCtrlID(pMsg->hwnd))
{
case IDC_TEXTURE:
if(pBillboard)
{
pBillboard->LoadTexture(m_strTexture);
}
break;
case IDC_CENX:
case IDC_CENY:
case IDC_CENZ:
if(pBillboard)
{
vector3 vecData;
if(!strcmp(m_edtCenX, "") || !strcmp(m_edtCenY, "") || !strcmp(m_edtCenZ, ""))
{
if(pBillboard->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 0, vecData);
pBillboard->m_lstCenter.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstCenter.Find(dwFrame, vecData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 0, vecData);
SetKey(dwFrame, pBillboard->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
} else
{
SetKey(dwFrame, pBillboard->m_lstCenter, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 0, vector3(m_edtCenX, m_edtCenY, m_edtCenZ));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_AXISX:
case IDC_AXISY:
case IDC_AXISZ:
if(pBillboard)
{
// m_fAxisX = m_fAxisX - (((unsigned long)(m_fAxisX / 360)) * 360.0f);
// m_fAxisY = m_fAxisY - (((unsigned long)(m_fAxisY / 360)) * 360.0f);
// m_fAxisZ = m_fAxisZ - (((unsigned long)(m_fAxisZ / 360)) * 360.0f);
quaternion quatAxis;
quatAxis.Identity();
quatAxis.Pitch(FLOAT_DEG((float)m_edtAxisX));
quatAxis.Yaw(FLOAT_DEG((float)m_edtAxisY));
quatAxis.Roll(FLOAT_DEG((float)m_edtAxisZ));
quaternion quatData;
if(!strcmp(m_edtAxisX, "") || !strcmp(m_edtAxisY, "") || !strcmp(m_edtAxisZ, ""))
{
if(pBillboard->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 1, quatData);
pBillboard->m_lstAxis.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstAxis.Find(dwFrame, quatData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 1, quatData);
SetKey(dwFrame, pBillboard->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 1, quatAxis);
} else
{
SetKey(dwFrame, pBillboard->m_lstAxis, quatAxis);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 1, quatAxis);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_ALPHA:
case IDC_COLR:
case IDC_COLG:
case IDC_COLB:
if(pBillboard)
{
color lData;
if(!strcmp(m_edtColR, "") || !strcmp(m_edtColG, "") || !strcmp(m_edtColB, "") || !strcmp(m_edtAlpha, ""))
{
if(pBillboard->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 2, lData);
pBillboard->m_lstColor.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstColor.Find(dwFrame, lData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 2, lData);
SetKey(dwFrame, pBillboard->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
} else
{
SetKey(dwFrame, pBillboard->m_lstColor, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 2, color(m_edtColR, m_edtColG, m_edtColB, m_edtAlpha));
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_WIDTH:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtWidth, ""))
{
if(pBillboard->m_lstWidth.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 3, fData);
pBillboard->m_lstWidth.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstWidth.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 3, fData);
SetKey(dwFrame, pBillboard->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 3, (float)m_edtWidth);
} else
{
SetKey(dwFrame, pBillboard->m_lstWidth, (float)m_edtWidth);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 3, (float)m_edtWidth);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_HEIGHT:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtHeight, ""))
{
if(pBillboard->m_lstHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 4, fData);
pBillboard->m_lstHeight.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstHeight.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 4, fData);
SetKey(dwFrame, pBillboard->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 4, (float)m_edtHeight);
} else
{
SetKey(dwFrame, pBillboard->m_lstHeight, (float)m_edtHeight);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 4, (float)m_edtHeight);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TEXFRAME:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtTexFrame, ""))
{
if(pBillboard->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 9, fData);
pBillboard->m_lstTexFrame.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstTexFrame.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 9, fData);
SetKey(dwFrame, pBillboard->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 9, (float)m_edtTexFrame);
} else
{
SetKey(dwFrame, pBillboard->m_lstTexFrame, (float)m_edtTexFrame);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 9, (float)m_edtTexFrame);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTU:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtStartU, ""))
{
if(pBillboard->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 7, fData);
pBillboard->m_lstStartU.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstStartU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 7, fData);
SetKey(dwFrame, pBillboard->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 7, (float)m_edtStartU);
} else
{
SetKey(dwFrame, pBillboard->m_lstStartU, (float)m_edtStartU);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 7, (float)m_edtStartU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTV:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtStartV, ""))
{
if(pBillboard->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 8, fData);
pBillboard->m_lstStartV.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstStartV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 8, fData);
SetKey(dwFrame, pBillboard->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 8, (float)m_edtStartV);
} else
{
SetKey(dwFrame, pBillboard->m_lstStartV, (float)m_edtStartV);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 8, (float)m_edtStartV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEU:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtTileU, ""))
{
if(pBillboard->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 5, fData);
pBillboard->m_lstTileU.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstTileU.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 5, fData);
SetKey(dwFrame, pBillboard->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 5, (float)m_edtTileU);
} else
{
SetKey(dwFrame, pBillboard->m_lstTileU, (float)m_edtTileU);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 5, (float)m_edtTileU);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_TILEV:
if(pBillboard)
{
float fData;
if(!strcmp(m_edtTileV, ""))
{
if(pBillboard->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_DELKEY, 6, fData);
pBillboard->m_lstTileV.Erase(dwFrame);
break;
}
}
if(pBillboard->m_lstTileV.Find(dwFrame, fData))
{
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_OLDDATA, 6, fData);
SetKey(dwFrame, pBillboard->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_NEWDATA, 6, (float)m_edtTileV);
} else
{
SetKey(dwFrame, pBillboard->m_lstTileV, (float)m_edtTileV);
g_CommandManager.AddCommand(1, pBillboard->GetUID(), dwFrame, COMMAND_INSERT, 6, (float)m_edtTileV);
}
// pPlane->SetFrame(FLT_MAX);
}
break;
case IDC_STARTFRAME:
if(pBillboard)
{
// pPlane->EditFrame(dwFrame, m_dwStartFrame);
pBillboard->SetStartFrame(m_dwStartFrame);
if(pBillboard->GetEndFrame() < m_dwStartFrame)
{
pBillboard->SetEndFrame(m_dwStartFrame);
m_dwEndFrame = m_dwStartFrame;
UpdateData(FALSE);
}
}
break;
case IDC_ENDFRAME:
if(pBillboard)
{
if(pBillboard->GetStartFrame() > m_dwEndFrame)
{
m_dwEndFrame = pBillboard->GetStartFrame();
UpdateData(FALSE);
}
pBillboard->SetEndFrame(m_dwEndFrame);
}
break;
}
SetKeyInfo();
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CBillboardPage::OnTexstatic()
{
// TODO: Add your control notification handler code here
m_bTexStatic = TRUE;
m_bTexAni = FALSE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pBillboard)
{
pBillboard->SetTexAni(m_bTexAni);
// pPlane->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
m_edtTexFrame.DisableBkColor();
SetKeyInfo();
}
void CBillboardPage::OnTexani()
{
// TODO: Add your control notification handler code here
m_bTexStatic = FALSE;
m_bTexAni = TRUE;
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pBillboard)
{
pBillboard->SetTexAni(m_bTexAni);
// pPlane->SetFrame(FLT_MAX);
}
GetDlgItem(IDC_STARTU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_STARTV)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEU)->EnableWindow(m_bTexStatic);
GetDlgItem(IDC_TILEV)->EnableWindow(m_bTexStatic);
m_edtStartU.DisableBkColor();
m_edtStartV.DisableBkColor();
m_edtTileU.DisableBkColor();
m_edtTileV.DisableBkColor();
GetDlgItem(IDC_TEXFRAME)->EnableWindow(m_bTexAni);
SetKeyInfo();
}
BOOL CBillboardPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
m_cbSrc.AddString("ZERO");
m_cbSrc.AddString("ONE");
m_cbSrc.AddString("SRCCOLOR");
m_cbSrc.AddString("INVSRCCOLOR");
m_cbSrc.AddString("SRCALPHA");
m_cbSrc.AddString("INVSRCALPHA");
m_cbSrc.AddString("DESTALPHA");
m_cbSrc.AddString("INVDESTALPHA");
m_cbSrc.AddString("DESTCOLOR");
m_cbSrc.AddString("INVDESTCOLOR");
m_cbSrc.AddString("SRCALPHASAT");
m_cbSrc.AddString("BOTHSRCALPHA");
m_cbSrc.AddString("BOTHINVSRCALPHA");
m_cbSrc.SetCurSel(4);
m_cbDest.AddString("ZERO");
m_cbDest.AddString("ONE");
m_cbDest.AddString("SRCCOLOR");
m_cbDest.AddString("INVSRCCOLOR");
m_cbDest.AddString("SRCALPHA");
m_cbDest.AddString("INVSRCALPHA");
m_cbDest.AddString("DESTALPHA");
m_cbDest.AddString("INVDESTALPHA");
m_cbDest.AddString("DESTCOLOR");
m_cbDest.AddString("INVDESTCOLOR");
m_cbDest.AddString("SRCALPHASAT");
m_cbDest.AddString("BOTHSRCALPHA");
m_cbDest.AddString("BOTHINVSRCALPHA");
m_cbDest.SetCurSel(1);
InitValue();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBillboardPage::InitValue()
{
m_strTexture = _T("");
m_dwEndFrame = 30;
m_dwStartFrame = 1;
((CButton *)(GetDlgItem(IDC_TEXSTATIC)))->SetCheck(1);
OnTexstatic();
m_edtAxisX.SetValue(0.0f);
m_edtAxisX.DisableBkColor();
m_edtAxisY.SetValue(0.0f);
m_edtAxisY.DisableBkColor();
m_edtAxisZ.SetValue(0.0f);
m_edtAxisZ.DisableBkColor();
m_edtCenX.SetValue(0.0f);
m_edtCenX.DisableBkColor();
m_edtCenY.SetValue(0.0f);
m_edtCenY.DisableBkColor();
m_edtCenZ.SetValue(0.0f);
m_edtCenZ.DisableBkColor();
m_edtWidth.SetValue(5.0f);
m_edtWidth.DisableBkColor();
m_edtHeight.SetValue(5.0f);
m_edtHeight.DisableBkColor();
m_edtStartU.SetValue(0.0f);
m_edtStartU.DisableBkColor();
m_edtStartV.SetValue(0.0f);
m_edtStartV.DisableBkColor();
m_edtTileU.SetValue(1.0f);
m_edtTileU.DisableBkColor();
m_edtTileV.SetValue(1.0f);
m_edtTileV.DisableBkColor();
m_edtAlpha.SetValue((unsigned char)255);
m_edtAlpha.DisableBkColor();
m_edtColB.SetValue((unsigned char)255);
m_edtColB.DisableBkColor();
m_edtColG.SetValue((unsigned char)255);
m_edtColG.DisableBkColor();
m_edtColR.SetValue((unsigned char)255);
m_edtColR.DisableBkColor();
m_edtTexFrame.SetValue((unsigned long)0);
m_edtTexFrame.DisableBkColor();
}
void CPlanePage::InitValue()
{
m_strTexture = _T("");
m_dwEndFrame = 30;
m_dwStartFrame = 1;
((CButton *)(GetDlgItem(IDC_TEXSTATIC)))->SetCheck(1);
OnTexstatic();
m_edtAxisX.SetValue(0.0f);
m_edtAxisX.DisableBkColor();
m_edtAxisY.SetValue(0.0f);
m_edtAxisY.DisableBkColor();
m_edtAxisZ.SetValue(0.0f);
m_edtAxisZ.DisableBkColor();
m_edtCenX.SetValue(0.0f);
m_edtCenX.DisableBkColor();
m_edtCenY.SetValue(0.0f);
m_edtCenY.DisableBkColor();
m_edtCenZ.SetValue(0.0f);
m_edtCenZ.DisableBkColor();
m_edtWidth.SetValue(5.0f);
m_edtWidth.DisableBkColor();
m_edtHeight.SetValue(5.0f);
m_edtHeight.DisableBkColor();
m_edtStartU.SetValue(0.0f);
m_edtStartU.DisableBkColor();
m_edtStartV.SetValue(0.0f);
m_edtStartV.DisableBkColor();
m_edtTileU.SetValue(1.0f);
m_edtTileU.DisableBkColor();
m_edtTileV.SetValue(1.0f);
m_edtTileV.DisableBkColor();
m_edtAlpha.SetValue((unsigned char)255);
m_edtAlpha.DisableBkColor();
m_edtColB.SetValue((unsigned char)255);
m_edtColB.DisableBkColor();
m_edtColG.SetValue((unsigned char)255);
m_edtColG.DisableBkColor();
m_edtColR.SetValue((unsigned char)255);
m_edtColR.DisableBkColor();
m_edtTexFrame.SetValue((unsigned long)0);
m_edtTexFrame.DisableBkColor();
}
void CBillboardPage::Undo(CCommand *UndoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(UndoCommand->GetUID());
if(!pBillboard) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(UndoCommand->GetListKind())
{
case 0:
UndoCommand->GetData(vecData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstCenter, vecData);
} else
{
pBillboard->m_lstCenter.Erase(UndoCommand->GetFrame());
}
break;
case 1:
UndoCommand->GetData(quatData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstAxis, quatData);
} else
{
pBillboard->m_lstAxis.Erase(UndoCommand->GetFrame());
}
break;
case 2:
UndoCommand->GetData(lData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstColor, lData);
} else
{
pBillboard->m_lstColor.Erase(UndoCommand->GetFrame());
}
break;
case 3:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstWidth, fData);
} else
{
pBillboard->m_lstWidth.Erase(UndoCommand->GetFrame());
}
break;
case 4:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstHeight, fData);
} else
{
pBillboard->m_lstHeight.Erase(UndoCommand->GetFrame());
}
break;
case 5:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstTileU, fData);
} else
{
pBillboard->m_lstTileU.Erase(UndoCommand->GetFrame());
}
break;
case 6:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstTileV, fData);
} else
{
pBillboard->m_lstTileV.Erase(UndoCommand->GetFrame());
}
break;
case 7:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstStartU, fData);
} else
{
pBillboard->m_lstStartU.Erase(UndoCommand->GetFrame());
}
break;
case 8:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstStartV, fData);
} else
{
pBillboard->m_lstStartV.Erase(UndoCommand->GetFrame());
}
break;
case 9:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pBillboard->m_lstTexFrame, fData);
} else
{
pBillboard->m_lstTexFrame.Erase(UndoCommand->GetFrame());
}
break;
}
SetKeyInfo();
}
void CPlanePage::Undo(CCommand *UndoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(UndoCommand->GetUID());
if(!pPlane) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(UndoCommand->GetListKind())
{
case 0:
UndoCommand->GetData(vecData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstCenter, vecData);
} else
{
pPlane->m_lstCenter.Erase(UndoCommand->GetFrame());
}
break;
case 1:
UndoCommand->GetData(quatData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstAxis, quatData);
} else
{
pPlane->m_lstAxis.Erase(UndoCommand->GetFrame());
}
break;
case 2:
UndoCommand->GetData(lData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstColor, lData);
} else
{
pPlane->m_lstColor.Erase(UndoCommand->GetFrame());
}
break;
case 3:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstWidth, fData);
} else
{
pPlane->m_lstWidth.Erase(UndoCommand->GetFrame());
}
break;
case 4:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstHeight, fData);
} else
{
pPlane->m_lstHeight.Erase(UndoCommand->GetFrame());
}
break;
case 5:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstTileU, fData);
} else
{
pPlane->m_lstTileU.Erase(UndoCommand->GetFrame());
}
break;
case 6:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstTileV, fData);
} else
{
pPlane->m_lstTileV.Erase(UndoCommand->GetFrame());
}
break;
case 7:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstStartU, fData);
} else
{
pPlane->m_lstStartU.Erase(UndoCommand->GetFrame());
}
break;
case 8:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstStartV, fData);
} else
{
pPlane->m_lstStartV.Erase(UndoCommand->GetFrame());
}
break;
case 9:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pPlane->m_lstTexFrame, fData);
} else
{
pPlane->m_lstTexFrame.Erase(UndoCommand->GetFrame());
}
break;
}
SetKeyInfo();
}
void CCylinderPage::Undo(CCommand *UndoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(UndoCommand->GetUID());
if(!pCylinder) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(UndoCommand->GetListKind())
{
case 0:
UndoCommand->GetData(vecData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstCenter, vecData);
} else
{
pCylinder->m_lstCenter.Erase(UndoCommand->GetFrame());
}
break;
case 1:
UndoCommand->GetData(quatData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstAxis, quatData);
} else
{
pCylinder->m_lstAxis.Erase(UndoCommand->GetFrame());
}
break;
case 2:
UndoCommand->GetData(lData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstColor, lData);
} else
{
pCylinder->m_lstColor.Erase(UndoCommand->GetFrame());
}
break;
case 3:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstUpperHeight, fData);
} else
{
pCylinder->m_lstUpperHeight.Erase(UndoCommand->GetFrame());
}
break;
case 4:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstLowerHeight, fData);
} else
{
pCylinder->m_lstLowerHeight.Erase(UndoCommand->GetFrame());
}
break;
case 5:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstUpperRadius, fData);
} else
{
pCylinder->m_lstUpperRadius.Erase(UndoCommand->GetFrame());
}
break;
case 6:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstLowerRadius, fData);
} else
{
pCylinder->m_lstLowerRadius.Erase(UndoCommand->GetFrame());
}
break;
case 7:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstTileU, fData);
} else
{
pCylinder->m_lstTileU.Erase(UndoCommand->GetFrame());
}
break;
case 8:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstTileV, fData);
} else
{
pCylinder->m_lstTileV.Erase(UndoCommand->GetFrame());
}
break;
case 9:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstStartU, fData);
} else
{
pCylinder->m_lstStartU.Erase(UndoCommand->GetFrame());
}
break;
case 10:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstStartV, fData);
} else
{
pCylinder->m_lstStartV.Erase(UndoCommand->GetFrame());
}
break;
case 11:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pCylinder->m_lstTexFrame, fData);
} else
{
pCylinder->m_lstTexFrame.Erase(UndoCommand->GetFrame());
}
break;
}
SetKeyInfo();
}
void CParticlePage::Undo(CCommand *UndoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(UndoCommand->GetUID());
if(!pParticle) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(UndoCommand->GetListKind())
{
case 0:
UndoCommand->GetData(vecData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstCenter, vecData);
} else
{
pParticle->m_lstCenter.Erase(UndoCommand->GetFrame());
}
break;
case 1:
UndoCommand->GetData(quatData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstAxis, quatData);
} else
{
pParticle->m_lstAxis.Erase(UndoCommand->GetFrame());
}
break;
case 2:
UndoCommand->GetData(lData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstColor, lData);
} else
{
pParticle->m_lstColor.Erase(UndoCommand->GetFrame());
}
break;
case 3:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstAmount, fData);
} else
{
pParticle->m_lstAmount.Erase(UndoCommand->GetFrame());
}
break;
case 4:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstAlpha, fData);
} else
{
pParticle->m_lstAlpha.Erase(UndoCommand->GetFrame());
}
break;
case 5:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstPower, fData);
} else
{
pParticle->m_lstPower.Erase(UndoCommand->GetFrame());
}
break;
case 6:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstAngle, fData);
} else
{
pParticle->m_lstAngle.Erase(UndoCommand->GetFrame());
}
break;
case 7:
UndoCommand->GetData(vecData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstEForce, vecData);
} else
{
pParticle->m_lstEForce.Erase(UndoCommand->GetFrame());
}
break;
case 8:
UndoCommand->GetData(quatData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstDirection, quatData);
} else
{
pParticle->m_lstDirection.Erase(UndoCommand->GetFrame());
}
break;
case 9:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstWidth, fData);
} else
{
pParticle->m_lstWidth.Erase(UndoCommand->GetFrame());
}
break;
case 10:
UndoCommand->GetData(fData);
if(UndoCommand->GetCommand() == COMMAND_NEWDATA || UndoCommand->GetCommand() == COMMAND_DELKEY)
{
SetKey(UndoCommand->GetFrame(), pParticle->m_lstHeight, fData);
} else
{
pParticle->m_lstHeight.Erase(UndoCommand->GetFrame());
}
break;
}
SetKeyInfo();
}
void CParticlePage::InitValue()
{
m_strTexture = _T("");
m_dwStartFrame = 1;
m_dwEndFrame = 30;
m_fRotation = 0.0f;
m_fTexSpeed = 1.0f;
m_fLifetime = 25.0f;
m_fLifetimeSeed = 0.0f;
m_fPowerSeed = 0.0f;
m_fRadius = 0.0f;
m_fVolX = 0.0f;
m_fVolY = 0.0f;
m_fVolZ = 0.0f;
m_fInnerRadius = 0.0f;
// m_fAutoTime = 0.0f;
((CButton *)(GetDlgItem(IDC_NOVOLUME)))->SetCheck(1);
OnNovolume();
// ((CButton *)(GetDlgItem(IDC_SCENARIO)))->SetCheck(1);
// OnScenario();
m_edtAxisX.SetValue(0.0f);
m_edtAxisX.DisableBkColor();
m_edtAxisY.SetValue(0.0f);
m_edtAxisY.DisableBkColor();
m_edtAxisZ.SetValue(0.0f);
m_edtAxisZ.DisableBkColor();
m_edtCenX.SetValue(0.0f);
m_edtCenX.DisableBkColor();
m_edtCenY.SetValue(0.0f);
m_edtCenY.DisableBkColor();
m_edtCenZ.SetValue(0.0f);
m_edtCenZ.DisableBkColor();
m_edtAlpha.SetValue((unsigned char)255);
m_edtAlpha.DisableBkColor();
m_edtAmount.SetValue(1.0f);
m_edtAmount.DisableBkColor();
m_edtAngle.SetValue(0.0f);
m_edtAngle.DisableBkColor();
m_edtDirX.SetValue(0.0f);
m_edtDirX.DisableBkColor();
m_edtDirY.SetValue(0.0f);
m_edtDirY.DisableBkColor();
m_edtDirZ.SetValue(0.0f);
m_edtDirZ.DisableBkColor();
m_edtEForceX.SetValue(0.0f);
m_edtEForceX.DisableBkColor();
m_edtEForceY.SetValue(0.0f);
m_edtEForceY.DisableBkColor();
m_edtEForceZ.SetValue(0.0f);
m_edtEForceZ.DisableBkColor();
m_edtWidth.SetValue(1.0f);
m_edtWidth.DisableBkColor();
m_edtHeight.SetValue(1.0f);
m_edtHeight.DisableBkColor();
m_edtPower.SetValue(0.0f);
m_edtPower.DisableBkColor();
m_edtSceAlpha.SetValue((unsigned char)255);
m_edtSceAlpha.DisableBkColor();
m_edtColB.SetValue((unsigned char)255);
m_edtColB.DisableBkColor();
m_edtColG.SetValue((unsigned char)255);
m_edtColG.DisableBkColor();
m_edtColR.SetValue((unsigned char)255);
m_edtColR.DisableBkColor();
}
void CCylinderPage::InitValue()
{
m_dwEndFrame = 30;
m_dwSidePlane = 3;
m_dwStartFrame = 1;
m_strTexture = _T("");
((CButton *)(GetDlgItem(IDC_TEXSTATIC)))->SetCheck(1);
OnTexstatic();
m_edtAxisX.SetValue(0.0f);
m_edtAxisX.DisableBkColor();
m_edtAxisY.SetValue(0.0f);
m_edtAxisY.DisableBkColor();
m_edtAxisZ.SetValue(0.0f);
m_edtAxisZ.DisableBkColor();
m_edtCenX.SetValue(0.0f);
m_edtCenX.DisableBkColor();
m_edtCenY.SetValue(0.0f);
m_edtCenY.DisableBkColor();
m_edtCenZ.SetValue(0.0f);
m_edtCenZ.DisableBkColor();
m_edtUpperHeight.SetValue(2.0f);
m_edtUpperHeight.DisableBkColor();
m_edtUpperRadius.SetValue(3.0f);
m_edtUpperRadius.DisableBkColor();
m_edtLowerHeight.SetValue(2.0f);
m_edtLowerHeight.DisableBkColor();
m_edtLowerRadius.SetValue(3.0f);
m_edtLowerRadius.DisableBkColor();
m_edtStartU.SetValue(0.0f);
m_edtStartU.DisableBkColor();
m_edtStartV.SetValue(0.0f);
m_edtStartV.DisableBkColor();
m_edtTileU.SetValue(1.0f);
m_edtTileU.DisableBkColor();
m_edtTileV.SetValue(1.0f);
m_edtTileV.DisableBkColor();
m_edtAlpha.SetValue((unsigned char)255);
m_edtAlpha.DisableBkColor();
m_edtColB.SetValue((unsigned char)255);
m_edtColB.DisableBkColor();
m_edtColG.SetValue((unsigned char)255);
m_edtColG.DisableBkColor();
m_edtColR.SetValue((unsigned char)255);
m_edtColR.DisableBkColor();
m_edtTexFrame.SetValue((unsigned long)0);
m_edtTexFrame.DisableBkColor();
}
void CBillboardPage::Redo(CCommand *RedoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(RedoCommand->GetUID());
if(!pBillboard) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(RedoCommand->GetListKind())
{
case 0:
RedoCommand->GetData(vecData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstCenter.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstCenter, vecData);
}
break;
case 1:
RedoCommand->GetData(quatData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstAxis.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstAxis, quatData);
}
break;
case 2:
RedoCommand->GetData(lData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstColor.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstColor, lData);
}
break;
case 3:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstWidth.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstWidth, fData);
}
break;
case 4:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstHeight.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstHeight, fData);
}
break;
case 5:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstTileU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstTileU, fData);
}
break;
case 6:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstTileV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstTileV, fData);
}
break;
case 7:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstStartU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstStartU, fData);
}
break;
case 8:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstStartV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstStartV, fData);
}
break;
case 9:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pBillboard->m_lstTexFrame.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pBillboard->m_lstTexFrame, fData);
}
break;
}
SetKeyInfo();
}
void CCylinderPage::Redo(CCommand *RedoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(RedoCommand->GetUID());
if(!pCylinder) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(RedoCommand->GetListKind())
{
case 0:
RedoCommand->GetData(vecData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstCenter.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstCenter, vecData);
}
break;
case 1:
RedoCommand->GetData(quatData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstAxis.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstAxis, quatData);
}
break;
case 2:
RedoCommand->GetData(lData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstColor.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstColor, lData);
}
break;
case 3:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstUpperHeight.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstUpperHeight, fData);
}
break;
case 4:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstLowerHeight.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstLowerHeight, fData);
}
break;
case 5:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstUpperRadius.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstUpperRadius, fData);
}
break;
case 6:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstLowerRadius.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstLowerRadius, fData);
}
break;
case 7:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstTileU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstTileU, fData);
}
break;
case 8:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstTileV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstTileV, fData);
}
break;
case 9:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstStartU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstStartU, fData);
}
break;
case 10:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstStartV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstStartV, fData);
}
break;
case 11:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pCylinder->m_lstTexFrame.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pCylinder->m_lstTexFrame, fData);
}
break;
}
SetKeyInfo();
}
void CParticlePage::Redo(CCommand *RedoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(RedoCommand->GetUID());
if(!pParticle) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(RedoCommand->GetListKind())
{
case 0:
RedoCommand->GetData(vecData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstCenter.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstCenter, vecData);
}
break;
case 1:
RedoCommand->GetData(quatData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstAxis.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstAxis, quatData);
}
break;
case 2:
RedoCommand->GetData(lData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstColor.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstColor, lData);
}
break;
case 3:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstAmount.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstAmount, fData);
}
break;
case 4:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstAlpha.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstAlpha, fData);
}
break;
case 5:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstPower.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstPower, fData);
}
break;
case 6:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstAngle.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstAngle, fData);
}
break;
case 7:
RedoCommand->GetData(vecData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstEForce.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstEForce, vecData);
}
break;
case 8:
RedoCommand->GetData(quatData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstDirection.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstDirection, quatData);
}
break;
case 9:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstWidth.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstWidth, fData);
}
break;
case 10:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pParticle->m_lstHeight.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pParticle->m_lstHeight, fData);
}
break;
}
SetKeyInfo();
}
void CPlanePage::Redo(CCommand *RedoCommand)
{
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditPlane *pPlane = (CX3DEffectEditPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetFindEditObject(RedoCommand->GetUID());
if(!pPlane) return;
vector3 vecData;
quaternion quatData;
color lData;
float fData;
switch(RedoCommand->GetListKind())
{
case 0:
RedoCommand->GetData(vecData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstCenter.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstCenter, vecData);
}
break;
case 1:
RedoCommand->GetData(quatData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstAxis.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstAxis, quatData);
}
break;
case 2:
RedoCommand->GetData(lData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstColor.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstColor, lData);
}
break;
case 3:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstWidth.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstWidth, fData);
}
break;
case 4:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstHeight.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstHeight, fData);
}
break;
case 5:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstTileU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstTileU, fData);
}
break;
case 6:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstTileV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstTileV, fData);
}
break;
case 7:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstStartU.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstStartU, fData);
}
break;
case 8:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstStartV.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstStartV, fData);
}
break;
case 9:
RedoCommand->GetData(fData);
if(RedoCommand->GetCommand() == COMMAND_DELKEY)
{
pPlane->m_lstTexFrame.Erase(RedoCommand->GetFrame());
} else
{
SetKey(RedoCommand->GetFrame(), pPlane->m_lstTexFrame, fData);
}
break;
}
SetKeyInfo();
}
void CBillboardPage::OnAxisaligned()
{
// TODO: Add your control notification handler code here
UpdateData();
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(!pBillboard) return;
pBillboard->SetAxisAligned(m_bAxisAligned);
}
void CParticlePage::OnContinuous()
{
// TODO: Add your control notification handler code here
UpdateData();
}
void CBillboardPage::OnSelchangeCbsrc()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pBillboard)
{
pBillboard->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
}
}
void CBillboardPage::OnSelchangeCbdest()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditBillboard *pBillboard = (CX3DEffectEditBillboard *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(1, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pBillboard)
{
pBillboard->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
}
}
void CBillboardPage::OnSelchangeCbaddressu()
{
// TODO: Add your control notification handler code here
}
void CBillboardPage::OnSelchangeCbaddressv()
{
// TODO: Add your control notification handler code here
}
void CParticlePage::OnSelchangeCbsrc()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
pParticle->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
}
}
void CParticlePage::OnSelchangeCbdest()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditParticle *pParticle = (CX3DEffectEditParticle *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(0, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pParticle)
{
pParticle->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
}
}
void CParticlePage::OnSelchangeCbaddressu()
{
// TODO: Add your control notification handler code here
}
void CParticlePage::OnSelchangeCbaddressv()
{
// TODO: Add your control notification handler code here
}
void CCylinderPage::OnSelchangeCbsrc()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pCylinder)
{
pCylinder->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
}
}
void CCylinderPage::OnSelchangeCbdest()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectEditCylinder *pCylinder = (CX3DEffectEditCylinder *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(2, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pCylinder)
{
pCylinder->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
}
}
void CCylinderPage::OnSelchangeCbaddressu()
{
// TODO: Add your control notification handler code here
}
void CCylinderPage::OnSelchangeCbaddressv()
{
// TODO: Add your control notification handler code here
}
void CPlanePage::OnSelchangeCbsrc()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectPlane *pPlane = (CX3DEffectPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pPlane)
{
pPlane->SetSrcBlending(D3DBLEND_ZERO + m_cbSrc.GetCurSel());
}
}
void CPlanePage::OnSelchangeCbdest()
{
// TODO: Add your control notification handler code here
CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CX3DEffectPlane *pPlane = (CX3DEffectPlane *)((CEffectEditorView*)mf->GetActiveView())->m_lpEffect->GetEffect(3, ((CEffectEditorView*)mf->GetActiveView())->m_dwPickEffect);
if(pPlane)
{
pPlane->SetDestBlending(D3DBLEND_ZERO + m_cbDest.GetCurSel());
}
}
void CPlanePage::OnSelchangeCbaddressu()
{
// TODO: Add your control notification handler code here
}
void CPlanePage::OnSelchangeCbaddressv()
{
// TODO: Add your control notification handler code here
}