Files
2026-03-19 20:55:56 -06:00

73 lines
2.2 KiB
C++

#ifndef _CSCRIPTPHAZONPOOL
#define _CSCRIPTPHAZONPOOL
#include "MetroidPrime/ScriptObjects/CScriptTrigger.hpp"
#include "Kyoto/Graphics/CModel.hpp"
#include "Kyoto/Math/CRelAngle.hpp"
#include "rstl/list.hpp"
#include "rstl/pair.hpp"
#include "rstl/single_ptr.hpp"
class CElementGen;
class CScriptPhazonPool : public CScriptTrigger {
public:
CScriptPhazonPool(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, const CVector3f& scale, bool active, const CAssetId& w1,
const CAssetId& w2, const CAssetId& w3, const CAssetId& w4, uint p11,
const CDamageInfo& dInfo, const CVector3f& orientedForce,
ETriggerFlags triggerFlags, bool p15, float p16, float p17, float p18,
float p19);
~CScriptPhazonPool() override;
// CEntity
void Accept(IVisitor& visitor) override;
void Think(float dt, CStateManager& mgr) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
// CActor
void AddToRenderer(const CFrustumPlanes& frustum, const CStateManager& mgr) const override;
void Render(const CStateManager& mgr) const override;
rstl::optional_object< CAABox > GetTouchBounds() const override;
void Touch(CActor& actor, CStateManager& mgr) override;
private:
rstl::list< rstl::pair< TUniqueId, bool > > mInhabitants;
rstl::single_ptr< CModelData > mModelData1;
rstl::single_ptr< CModelData > mModelData2;
rstl::single_ptr< CElementGen > mElementGen1;
rstl::single_ptr< CElementGen > mElementGen2;
CAABox mBounds;
CVector3f mScale;
float x19c;
float x1a0;
float x1a4;
float mRotY;
float mRotZ;
float x1b0;
float x1b4;
float x1b8;
float x1bc;
float x1c0;
float x1c4;
float x1c8;
float x1cc;
float x1d0;
float x1d4;
uint x1d8;
uint x1dc;
bool x1e0_24 : 1;
bool x1e0_25 : 1;
void UpdateInhabitants(CStateManager& mgr);
void UpdateParticleGens(CStateManager& mgr);
void RemoveInhabitants(CStateManager& mgr);
void SetEmitParticles(bool val);
};
// NOTE: operator_new allocates 0x1E8 bytes. CScriptTrigger base may have
// undiscovered members at 0x14C-0x14F causing a 4-byte size discrepancy.
#endif // _CSCRIPTPHAZONPOOL