prime/include/Kyoto/Particles/CElementGen.hpp

62 lines
2.0 KiB
C++
Raw Normal View History

#ifndef _CELEMENTGEN
#define _CELEMENTGEN
#include "types.h"
2022-10-06 11:04:05 +00:00
#include "Kyoto/Particles/CParticleGen.hpp"
#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 {
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 };
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]); }
static void Initialize();
static void ShutDown();
private:
uchar x4_pad[0x33C];
};
CHECK_SIZEOF(CElementGen, 0x340)
#endif // _CELEMENTGEN