2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _CPARTICLEGEN
|
|
|
|
#define _CPARTICLEGEN
|
2022-07-26 04:36:32 +00:00
|
|
|
|
2022-10-11 15:30:39 +00:00
|
|
|
#include "rstl/list.hpp"
|
2022-11-27 00:26:12 +00:00
|
|
|
#include "rstl/optional_object.hpp"
|
2023-10-13 04:49:09 +00:00
|
|
|
#include "rstl/pair.hpp"
|
2022-10-11 15:30:39 +00:00
|
|
|
|
2023-10-13 04:49:09 +00:00
|
|
|
class CAABox;
|
|
|
|
class CColor;
|
|
|
|
class CLight;
|
|
|
|
class CTransform4f;
|
|
|
|
class CVector3f;
|
2022-07-26 04:36:32 +00:00
|
|
|
class CWarp;
|
2022-10-11 15:30:39 +00:00
|
|
|
|
2022-07-26 04:36:32 +00:00
|
|
|
class CParticleGen {
|
|
|
|
public:
|
2023-10-13 04:49:09 +00:00
|
|
|
virtual ~CParticleGen() = 0;
|
2022-09-18 06:05:46 +00:00
|
|
|
virtual void Update(double) = 0;
|
|
|
|
virtual void Render() const = 0;
|
|
|
|
virtual void SetOrientation(const CTransform4f& orientation) = 0;
|
|
|
|
virtual void SetTranslation(const CVector3f& translation) = 0;
|
|
|
|
virtual void SetGlobalOrientation(const CTransform4f& orientation) = 0;
|
|
|
|
virtual void SetGlobalTranslation(const CVector3f& translation) = 0;
|
|
|
|
virtual void SetGlobalScale(const CVector3f& scale) = 0;
|
|
|
|
virtual void SetLocalScale(const CVector3f& scale) = 0;
|
|
|
|
virtual void SetParticleEmission(bool emission) = 0;
|
|
|
|
virtual void SetModulationColor(const CColor& col) = 0;
|
|
|
|
virtual void SetGeneratorRate(float rate) {}
|
2022-10-19 03:50:15 +00:00
|
|
|
virtual const CTransform4f& GetOrientation() const = 0;
|
|
|
|
virtual const CVector3f& GetTranslation() const = 0;
|
2022-09-18 06:05:46 +00:00
|
|
|
virtual CTransform4f GetGlobalOrientation() const = 0;
|
|
|
|
virtual CVector3f GetGlobalTranslation() const = 0;
|
|
|
|
virtual CVector3f GetGlobalScale() const = 0;
|
|
|
|
virtual bool GetParticleEmission() const = 0;
|
|
|
|
virtual CColor GetModulationColor() const = 0;
|
|
|
|
virtual float GetGeneratorRate() const { return 1.f; }
|
|
|
|
virtual bool IsSystemDeletable() const = 0;
|
2023-10-13 04:49:09 +00:00
|
|
|
virtual rstl::optional_object< CAABox > GetBounds() const = 0;
|
2022-10-09 16:34:58 +00:00
|
|
|
virtual int GetParticleCount() const = 0;
|
2022-09-18 06:05:46 +00:00
|
|
|
virtual bool SystemHasLight() const = 0;
|
|
|
|
virtual CLight GetLight() = 0;
|
|
|
|
virtual void DestroyParticles() = 0;
|
2023-10-13 04:49:09 +00:00
|
|
|
virtual void AddModifier(CWarp*);
|
2022-09-18 06:05:46 +00:00
|
|
|
virtual uint Get4CharId() const = 0;
|
2022-10-11 15:30:39 +00:00
|
|
|
|
|
|
|
private:
|
2023-02-04 09:18:12 +00:00
|
|
|
rstl::list< CWarp* > x4_modifiersList;
|
2022-07-26 04:36:32 +00:00
|
|
|
};
|
|
|
|
|
2023-10-13 04:49:09 +00:00
|
|
|
inline CParticleGen::~CParticleGen() {}
|
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _CPARTICLEGEN
|