mirror of https://github.com/AxioDL/metaforce.git
79 lines
2.3 KiB
C++
79 lines
2.3 KiB
C++
#ifndef __RETRO_CELEMENTGEN_HPP__
|
|
#define __RETRO_CELEMENTGEN_HPP__
|
|
|
|
#include "../RetroTypes.hpp"
|
|
#include "CTransform.hpp"
|
|
#include "CColor.hpp"
|
|
#include "CAABox.hpp"
|
|
|
|
namespace Retro
|
|
{
|
|
class CWarp;
|
|
class CLight;
|
|
class CGenDescription
|
|
{
|
|
};
|
|
|
|
class CElementGen
|
|
{
|
|
bool x68_particleEmission;
|
|
float x78_generatorRate;
|
|
Zeus::CVector3f x88_globalTranslation;
|
|
Zeus::CTransform x1d8_globalOrientation;
|
|
std::vector<CElementGen> x240_children;
|
|
std::vector<CElementGen> x254_children;
|
|
public:
|
|
virtual const Zeus::CVector3f& GetGlobalTranslation() const
|
|
{ return x88_globalTranslation; }
|
|
virtual const Zeus::CTransform& GetGlobalOrientation() const
|
|
{ return x1d8_globalOrientation; }
|
|
virtual bool GetParticleEmission() const
|
|
{ return x68_particleEmission; }
|
|
|
|
void SetGeneratorRateScalar(float scalar)
|
|
{
|
|
if (scalar >= 0.0f)
|
|
x78_generatorRate = scalar;
|
|
else
|
|
x78_generatorRate = 0.0f;
|
|
|
|
for (CElementGen& child : x240_children)
|
|
child.SetGeneratorRateScalar(x78_generatorRate);
|
|
|
|
for (CElementGen& child : x254_children)
|
|
child.SetGeneratorRateScalar(x78_generatorRate);
|
|
}
|
|
|
|
static void Initialize()
|
|
{
|
|
}
|
|
void BuildParticleSystemBounds();
|
|
|
|
virtual ~CElementGen() {}
|
|
virtual void Update(double);
|
|
virtual void Render();
|
|
virtual void SetOrientation(const Zeus::CTransform&);
|
|
virtual void SetTranslation(const Zeus::CVector3f&);
|
|
virtual void SetGlobalOrientation(const Zeus::CTransform&);
|
|
virtual void SetGlobalTranslation(const Zeus::CVector3f&);
|
|
virtual void SetGlobalScale(const Zeus::CVector3f&);
|
|
virtual void SetLocalScale(const Zeus::CVector3f&);
|
|
virtual void SetParticleEmission(bool);
|
|
virtual void SetModulationColor(const Zeus::CColor&);
|
|
virtual const Zeus::CTransform& GetOrientation() const;
|
|
virtual const Zeus::CVector3f& GetTranslation() const;
|
|
virtual const Zeus::CVector3f& GetGlobalScale() const;
|
|
virtual const Zeus::CColor& GetModulationColor() const;
|
|
virtual bool IsSystemDeletable() const;
|
|
virtual Zeus::CAABox GetBounds() const;
|
|
virtual u32 GetParticleCount() const;
|
|
virtual bool SystemHasLight() const;
|
|
virtual CLight GetLight() const;
|
|
virtual void DestroyParticles();
|
|
virtual void AddModifier(CWarp*);
|
|
};
|
|
|
|
}
|
|
|
|
#endif // __RETRO_CELEMENTGEN_HPP__
|