forked from Tr0n/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
90
src/EffectLib/EffectInstance.h
Normal file
90
src/EffectLib/EffectInstance.h
Normal file
@ -0,0 +1,90 @@
|
||||
#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;
|
||||
};
|
Reference in New Issue
Block a user