91 lines
2.3 KiB
C++
91 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include "../eterlib/GrpObjectInstance.h"
|
|
#include "../eterlib/Pool.h"
|
|
#include "../mileslib/Type.h"
|
|
|
|
#include "EffectElementBaseInstance.h"
|
|
#include "EffectData.h"
|
|
#include "EffectMeshInstance.h"
|
|
#include "ParticleSystemInstance.h"
|
|
#include "SimpleLightInstance.h"
|
|
|
|
class CEffectInstance : public CGraphicObjectInstance
|
|
{
|
|
public:
|
|
typedef std::vector<CEffectElementBaseInstance*> TEffectElementInstanceVector;
|
|
|
|
enum
|
|
{
|
|
ID = EFFECT_OBJECT
|
|
};
|
|
int GetType() const
|
|
{
|
|
return CEffectInstance::ID;
|
|
}
|
|
|
|
bool GetBoundingSphere(D3DXVECTOR3 & v3Center, float & fRadius);
|
|
|
|
static void DestroySystem();
|
|
|
|
static CEffectInstance* New();
|
|
static void Delete(CEffectInstance* pkEftInst);
|
|
|
|
static void ResetRenderingEffectCount();
|
|
static int GetRenderingEffectCount();
|
|
|
|
public:
|
|
CEffectInstance();
|
|
virtual ~CEffectInstance();
|
|
|
|
bool LessRenderOrder(CEffectInstance* pkEftInst);
|
|
|
|
void SetEffectDataPointer(CEffectData * pEffectData);
|
|
|
|
void Clear();
|
|
BOOL isAlive();
|
|
void SetActive();
|
|
void SetDeactive();
|
|
void SetGlobalMatrix(const D3DXMATRIX & c_rmatGlobal);
|
|
void UpdateSound();
|
|
void OnUpdate();
|
|
void OnRender();
|
|
void OnBlendRender() {} // Not used
|
|
void OnRenderToShadowMap() {} // Not used
|
|
void OnRenderShadow() {} // Not used
|
|
void OnRenderPCBlocker() {} // Not used
|
|
|
|
protected:
|
|
void __Initialize();
|
|
|
|
void __SetParticleData(CParticleSystemData * pData);
|
|
void __SetMeshData(CEffectMeshScript * pMesh);
|
|
void __SetLightData(CLightData * pData);
|
|
|
|
virtual void OnUpdateCollisionData(const CStaticCollisionDataVector * pscdVector) {} // Not used
|
|
virtual void OnUpdateHeighInstance(CAttributeInstance * pAttributeInstance) {}
|
|
virtual bool OnGetObjectHeight(float fX, float fY, float * pfHeight) { return false; }
|
|
|
|
protected:
|
|
BOOL m_isAlive;
|
|
DWORD m_dwFrame;
|
|
D3DXMATRIX m_matGlobal;
|
|
|
|
CEffectData * m_pkEftData;
|
|
|
|
std::vector<CParticleSystemInstance*> m_ParticleInstanceVector;
|
|
std::vector<CEffectMeshInstance*> m_MeshInstanceVector;
|
|
std::vector<CLightInstance*> m_LightInstanceVector;
|
|
|
|
NSound::TSoundInstanceVector * m_pSoundInstanceVector;
|
|
|
|
float m_fBoundingSphereRadius;
|
|
D3DXVECTOR3 m_v3BoundingSpherePosition;
|
|
|
|
float m_fLastTime;
|
|
|
|
public:
|
|
static CDynamicPool<CEffectInstance> ms_kPool;
|
|
static int ms_iRenderingEffectCount;
|
|
};
|