// X3DEffectMesh.h: interface for the CX3DEffectMesh class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_X3DEFFECTMESH_H__AE1D13FE_1406_41C3_B13A_98825BC9C07C__INCLUDED_) #define AFX_X3DEFFECTMESH_H__AE1D13FE_1406_41C3_B13A_98825BC9C07C__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "X3DEffectBase.h" #include "CGemRender.h" #include //#include #define EFF_MAXCASH 60 using namespace std; class _CashNode { // Mesh Cash List node class public: CGemRender *m_pMesh; // Mesh Data int m_nUseCount; // ÀÌ ³ëµå¸¦ ÀÌ¿ëÇÏ´Â effectÀÇ °¹¼ö(0ÀÌ µÇ¸é list ¿¡¼­ »èÁ¦ °¡´É) _CashNode() { m_pMesh = NULL; m_nUseCount = 0; } ~_CashNode() { if(m_pMesh != NULL) { delete m_pMesh; m_pMesh = NULL; } } }; class CashNode { public: vector<_CashNode *> m_Cash; int m_nCash; CashNode() { m_Cash.clear(); m_nCash = 0; } ~CashNode() { for(int i=0;i CashNode; //typedef std::map CashNode; typedef struct _MeshObject { CKeyList m_lstColor; float m_fStartTexFrame; float m_fTexFrame; } MeshObject; class CX3DEffectMesh : public CX3DEffectBase { protected: bool m_bUpdateFrame; char m_strMeshFile[MAX_PATH]; // CEffectMesh *Mesh; CGemRender *m_GemRender; float m_fRenderFrame; // Render µÇ¾î¾ß ÇÒ Frame static CashNode m_lstCash; // Mesh cash list // static int m_nCash; // Mesh cash Num int *m_GemObjectTexNum; // Gem Object Texture Num DWORD *m_dwTick; bool *m_bFirst; public: unsigned long m_dwObjectNum; MeshObject *m_moMesh; public: CX3DEffectMesh(); virtual ~CX3DEffectMesh(); // Mesh Cash Func CGemRender *LoadCash(char *strFilename); // Cash ¾ÈÀÇ mesh load void InputCash(CGemRender *); // Cash ¾È¿¡ mesh data input void DeleteCash(); // Cash ¾ÈÀÇ mesh Data delete //static void DeleteAllCash(); // Cash ÀüºÎ delete void SubUseCount(char *strFilename); // Cash ÂüÁ¶ Ä«¿îÅÍ 1 °¨¼Ò unsigned long GetMaxFrame(void) { return (unsigned long)m_GemRender->GetMaxFrame(); } void SetSrcBlending(unsigned long dwSrcBlending) { m_dwSrcBlending = dwSrcBlending; // Mesh->SetBlend(m_dwSrcBlending, m_dwDestBlending); m_GemRender->SetSrcBlend(m_dwSrcBlending); } void SetDestBlending(unsigned long dwDestBlending) { m_dwDestBlending = dwDestBlending; // Mesh->SetBlend(m_dwSrcBlending, m_dwDestBlending); m_GemRender->SetDstBlend(m_dwDestBlending); } void SetTexFrame(unsigned long dwObjectNum, float fTexFrame) { m_moMesh[dwObjectNum].m_fTexFrame = fTexFrame; // Mesh->SetTexAniFrame(dwObjectNum, fTexFrame); m_GemRender->SetChangeAniFrame(dwObjectNum, fTexFrame); } float GetTexFrame(unsigned long dwObjectNum) { return m_moMesh[dwObjectNum].m_fTexFrame; } void SetStartTexFrame(unsigned long dwObjectNum, float fStartTexFrame) { m_moMesh[dwObjectNum].m_fStartTexFrame = fStartTexFrame; m_GemRender->SetStartTexAniFrame(dwObjectNum,fStartTexFrame); // Mesh->SetStartTexAni(dwObjectNum, fStartTexFrame); } float GetStartTexFrame(unsigned long dwObjectNum) { return m_moMesh[dwObjectNum].m_fStartTexFrame; } void SetObjectColor(unsigned long dwObjectNum) { // Mesh->SetPickColor(dwObjectNum, r, g, b, a); // Mesh->SetPickNum(dwObjectNum); m_GemRender->SetPickObject(dwObjectNum); } void Create(unsigned long dwStartFrame, unsigned long dwEndFrame); BOOL CreateBuffer(); void Render(void); BOOL Interpolation(float fFrame); void LoadFile(char *file); void Load(FILE *fp, const char *strOriginalPath = NULL); void Save(FILE *fp, const char *strOriginalPath = NULL); }; #endif // !defined(AFX_X3DEFFECTMESH_H__AE1D13FE_1406_41C3_B13A_98825BC9C07C__INCLUDED_)