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>
4792 lines
144 KiB
C++
4792 lines
144 KiB
C++
// 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
|
||
|
||
}
|
||
|