2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _CELEMENTGEN
|
|
|
|
#define _CELEMENTGEN
|
2022-09-13 04:26:54 +00:00
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
2022-10-06 11:04:05 +00:00
|
|
|
#include "Kyoto/Particles/CParticleGen.hpp"
|
2022-10-09 05:13:17 +00:00
|
|
|
#include "Kyoto/TToken.hpp"
|
2022-10-06 11:04:05 +00:00
|
|
|
|
2022-10-06 20:40:18 +00:00
|
|
|
class CGenDescription;
|
|
|
|
|
2022-10-06 11:04:05 +00:00
|
|
|
class CElementGen : public CParticleGen {
|
2022-09-13 04:26:54 +00:00
|
|
|
public:
|
2022-10-06 09:30:10 +00:00
|
|
|
enum EModelOrientationType { kMOT_Normal, kMOT_One };
|
|
|
|
enum EOptionalSystemFlags { kOSF_None, kOSF_One, kOSF_Two };
|
|
|
|
enum LightType { kLT_None = 0, kLT_Custom = 1, kLT_Directional = 2, kLT_Spot = 3 };
|
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
CElementGen(TToken< CGenDescription >, EModelOrientationType = kMOT_Normal,
|
|
|
|
EOptionalSystemFlags = kOSF_One);
|
2022-10-06 11:04:05 +00:00
|
|
|
~CElementGen();
|
|
|
|
|
|
|
|
virtual void Update(double);
|
|
|
|
virtual void Render() const;
|
|
|
|
virtual void SetOrientation(const CTransform4f& orientation);
|
|
|
|
virtual void SetTranslation(const CVector3f& translation);
|
|
|
|
virtual void SetGlobalOrientation(const CTransform4f& orientation);
|
|
|
|
virtual void SetGlobalTranslation(const CVector3f& translation);
|
|
|
|
virtual void SetGlobalScale(const CVector3f& scale);
|
|
|
|
virtual void SetLocalScale(const CVector3f& scale);
|
|
|
|
virtual void SetParticleEmission(bool emission);
|
|
|
|
virtual void SetModulationColor(const CColor& col);
|
|
|
|
virtual void SetGeneratorRate(float rate) {}
|
|
|
|
virtual CTransform4f GetOrientation() const;
|
|
|
|
virtual CVector3f GetTranslation() const;
|
|
|
|
virtual CTransform4f GetGlobalOrientation() const;
|
|
|
|
virtual CVector3f GetGlobalTranslation() const;
|
|
|
|
virtual CVector3f GetGlobalScale() const;
|
|
|
|
virtual bool GetParticleEmission() const;
|
|
|
|
virtual CColor GetModulationColor() const;
|
|
|
|
virtual bool IsSystemDeletable() const;
|
|
|
|
virtual CAABox GetBounds() const;
|
2022-10-09 16:34:58 +00:00
|
|
|
virtual int GetParticleCount() const;
|
2022-10-06 11:04:05 +00:00
|
|
|
virtual bool SystemHasLight() const;
|
|
|
|
virtual CLight GetLight();
|
|
|
|
virtual void DestroyParticles();
|
|
|
|
virtual void AddModifier(CWarp*);
|
|
|
|
virtual uint Get4CharId() const;
|
2022-10-06 09:30:10 +00:00
|
|
|
|
2022-10-09 16:34:58 +00:00
|
|
|
int GetEmitterTime() const;
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
int GetCumulativeParticleCount() const { return *reinterpret_cast< const int* >(&x4_pad[0x25c]); }
|
|
|
|
|
2022-09-13 04:26:54 +00:00
|
|
|
static void Initialize();
|
|
|
|
static void ShutDown();
|
2022-10-06 10:38:13 +00:00
|
|
|
|
|
|
|
private:
|
2022-10-09 05:37:23 +00:00
|
|
|
uchar x4_pad[0x33C];
|
2022-09-13 04:26:54 +00:00
|
|
|
};
|
2022-10-06 10:38:13 +00:00
|
|
|
CHECK_SIZEOF(CElementGen, 0x340)
|
2022-09-13 04:26:54 +00:00
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _CELEMENTGEN
|