69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include "../milesLib/Type.h"
|
|
|
|
#include "ParticleSystemData.h"
|
|
#include "EffectMesh.h"
|
|
#include "SimpleLightData.h"
|
|
|
|
class CEffectData
|
|
{
|
|
public:
|
|
typedef std::vector<CParticleSystemData*> TParticleVector;
|
|
typedef std::vector<CEffectMeshScript*> TMeshVector;
|
|
typedef std::vector<CLightData*> TLightVector;
|
|
|
|
public:
|
|
CEffectData();
|
|
virtual ~CEffectData();
|
|
|
|
void Clear();
|
|
bool LoadScript(const char * c_szFileName);
|
|
bool LoadSoundScriptData(const char * c_szFileName);
|
|
|
|
DWORD GetParticleCount();
|
|
CParticleSystemData * GetParticlePointer(DWORD dwPosition);
|
|
|
|
DWORD GetMeshCount();
|
|
CEffectMeshScript * GetMeshPointer(DWORD dwPosition);
|
|
|
|
DWORD GetLightCount();
|
|
CLightData * GetLightPointer(DWORD dwPosition);
|
|
|
|
NSound::TSoundInstanceVector * GetSoundInstanceVector();
|
|
|
|
float GetBoundingSphereRadius();
|
|
D3DXVECTOR3 GetBoundingSpherePosition();
|
|
|
|
const char * GetFileName() const;
|
|
|
|
protected:
|
|
void __ClearParticleDataVector();
|
|
void __ClearLightDataVector();
|
|
void __ClearMeshDataVector();
|
|
|
|
// FIXME : 이 부분은 그다지 맘에 들지 않는다. 좋은 아이디어를 찾아내어 고치자.
|
|
// 상위가 (특화된) 상위의 인터페이스 때문에 모양이 바뀌어야 한다는 것은 옳지 못하다. - [levites]
|
|
virtual CParticleSystemData * AllocParticle();
|
|
virtual CEffectMeshScript * AllocMesh();
|
|
virtual CLightData * AllocLight();
|
|
|
|
protected:
|
|
TParticleVector m_ParticleVector;
|
|
TMeshVector m_MeshVector;
|
|
TLightVector m_LightVector;
|
|
NSound::TSoundInstanceVector m_SoundInstanceVector;
|
|
|
|
float m_fBoundingSphereRadius;
|
|
D3DXVECTOR3 m_v3BoundingSpherePosition;
|
|
|
|
std::string m_strFileName;
|
|
|
|
public:
|
|
static void DestroySystem();
|
|
|
|
static CEffectData* New();
|
|
static void Delete(CEffectData* pkData);
|
|
|
|
static CDynamicPool<CEffectData> ms_kPool;
|
|
}; |