mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-03-31 14:22:54 -07:00
73 lines
2.2 KiB
C++
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
|