172 lines
4.2 KiB
C++
172 lines
4.2 KiB
C++
|
|
#ifndef PARTICLEMANAGER_H
|
|
#define PARTICLEMANAGER_H
|
|
|
|
#include "CKBaseManager.h"
|
|
|
|
#include "ParticleTools.h"
|
|
|
|
#include "PointEmitter.h"
|
|
#include "PlanarEmitter.h"
|
|
#include "CubicEmitter.h"
|
|
#include "LineEmitter.h"
|
|
#include "DiscEmitter.h"
|
|
#include "ObjectEmitter.h"
|
|
#include "CurveEmitter.h"
|
|
#include "CylindricalEmitter.h"
|
|
#include "SphericalEmitter.h"
|
|
|
|
#define PARTICLE_MANAGER_GUID CKGUID(0x1dd91197,0x1f703f3)
|
|
|
|
class ParticleEmitter;
|
|
|
|
// This class is exported from the RadiosityManager.dll
|
|
class ParticleManager : public CKBaseManager {
|
|
public:
|
|
///
|
|
// Methods
|
|
|
|
// Ctor
|
|
ParticleManager(CKContext* ctx);
|
|
// Dtor
|
|
~ParticleManager();
|
|
|
|
CKERROR OnCKInit();
|
|
CKERROR OnCKEnd();
|
|
CKERROR PostClearAll() { return OnCKInit(); }
|
|
CKERROR PostProcess();
|
|
|
|
CKERROR OnCKPause();
|
|
CKERROR PostLaunchScene(CKScene* OldScene,CKScene* NewScene);
|
|
CKERROR PreSave();
|
|
CKERROR PostSave();
|
|
|
|
CKDWORD GetValidFunctionsMask() {
|
|
return CKMANAGER_FUNC_OnCKInit |
|
|
CKMANAGER_FUNC_OnCKPause |
|
|
CKMANAGER_FUNC_PostLaunchScene |
|
|
CKMANAGER_FUNC_PreSave |
|
|
CKMANAGER_FUNC_PostSave |
|
|
CKMANAGER_FUNC_PostClearAll |
|
|
CKMANAGER_FUNC_PostProcess; }
|
|
|
|
// Methods
|
|
|
|
// Particle System Creation
|
|
ParticleEmitter* CreateNewEmitter(CKGUID guid,CK_ID entity);
|
|
void DeleteEmitter(ParticleEmitter* iEmitter);
|
|
|
|
// Init
|
|
void InitAttributes();
|
|
void InitMeshes();
|
|
void DestroyMeshes();
|
|
void ShowInteractors(CKBOOL on = TRUE);
|
|
|
|
// Deflectors Management
|
|
void ManagePlaneDeflectors(ParticleEmitter* em,float deltat);
|
|
void ManageInfinitePlaneDeflectors(ParticleEmitter* em,float deltat);
|
|
void ManageCylinderDeflectors(ParticleEmitter* em,float deltat);
|
|
void ManageSphereDeflectors(ParticleEmitter* em,float deltat);
|
|
void ManageBoxDeflectors(ParticleEmitter* em,float deltat);
|
|
void ManageObjectDeflectors(ParticleEmitter* em,float deltat);
|
|
|
|
// Interactors management
|
|
void ManageGravity(ParticleEmitter* em,float deltat);
|
|
void ManageAtmosphere(ParticleEmitter* em,float deltat);
|
|
void ManageGlobalWind(ParticleEmitter* em,float deltat);
|
|
void ManageLocalWind(ParticleEmitter* em,float deltat);
|
|
void ManageMagnet(ParticleEmitter* em,float deltat);
|
|
void ManageVortex(ParticleEmitter* em,float deltat);
|
|
void ManageDisruptionBox(ParticleEmitter* em,float deltat);
|
|
void ManageMutationBox(ParticleEmitter* em,float deltat);
|
|
void ManageTunnel(ParticleEmitter* em,float deltat);
|
|
void ManageProjector(ParticleEmitter* em,float deltat);
|
|
|
|
///
|
|
// Members
|
|
// Particle Systems Attributes
|
|
// Interactors
|
|
int m_GravityAttribute;
|
|
int m_GlobalWindAttribute;
|
|
int m_LocalWindAttribute;
|
|
int m_MagnetAttribute;
|
|
int m_VortexAttribute;
|
|
int m_DisruptionBoxAttribute;
|
|
int m_MutationBoxAttribute;
|
|
int m_AtmosphereAttribute;
|
|
int m_TunnelAttribute;
|
|
int m_ProjectorAttribute;
|
|
// deflectors
|
|
int m_DPlaneAttribute;
|
|
int m_DInfinitePlaneAttribute;
|
|
int m_DCylinderAttribute;
|
|
int m_DSphereAttribute;
|
|
int m_DBoxAttribute;
|
|
int m_DObjectAttribute;
|
|
|
|
// Meshes Creation
|
|
void CreateGlobalWindMesh();
|
|
void CreateLocalWindMesh();
|
|
void CreateMagnetMesh();
|
|
void CreateVortexMesh();
|
|
void CreateDisruptionBoxMesh();
|
|
void CreateMutationBoxMesh();
|
|
void CreateTunnelMesh();
|
|
|
|
void CreateDPlaneMesh();
|
|
void CreateDInfinitePlaneMesh();
|
|
void CreateDCylinderMesh();
|
|
void CreateDSphereMesh();
|
|
void CreateDBoxMesh();
|
|
|
|
void CreatePointMesh();
|
|
void CreateLinearMesh();
|
|
void CreatePlanarMesh();
|
|
void CreateCubicMesh();
|
|
void CreateDiscMesh();
|
|
void CreateCylindricalMesh();
|
|
void CreateSphericalMesh();
|
|
|
|
void InteractorsSetRemoveMesh(CKBOOL iAdd);
|
|
|
|
// meshes
|
|
CK_ID m_GlobalWindMesh;
|
|
CK_ID m_LocalWindMesh;
|
|
CK_ID m_MagnetMesh;
|
|
CK_ID m_VortexMesh;
|
|
CK_ID m_DisruptionBoxMesh;
|
|
CK_ID m_MutationBoxMesh;
|
|
CK_ID m_TunnelMesh;
|
|
|
|
CK_ID m_DPlaneMesh;
|
|
CK_ID m_DInfinitePlaneMesh;
|
|
CK_ID m_DCylinderMesh;
|
|
CK_ID m_DSphereMesh;
|
|
CK_ID m_DBoxMesh;
|
|
|
|
CK_ID m_PointMesh;
|
|
CK_ID m_LinearMesh;
|
|
CK_ID m_PlanarMesh;
|
|
CK_ID m_CubicMesh;
|
|
CK_ID m_DiscMesh;
|
|
CK_ID m_CylindricalMesh;
|
|
CK_ID m_SphericalMesh;
|
|
|
|
static char* Name;
|
|
|
|
CKMaterial* m_ParticleMaterial;
|
|
|
|
CKBOOL m_ShowInteractors;
|
|
|
|
XArray<ParticleEmitter*> m_Emitters;
|
|
int m_TotalParticleCount;
|
|
|
|
protected:
|
|
void _InteractorsSetRemoveMesh(int iAttribute, CK_ID iMeshID, CKBOOL iAdd);
|
|
|
|
};
|
|
|
|
|
|
extern ParticleManager TheParticleManager;
|
|
|
|
#endif |