Files

84 lines
3.0 KiB
C++
Raw Permalink Normal View History

2026-03-19 20:55:56 -06:00
#ifndef _CSCRIPTPLAYERACTOR
#define _CSCRIPTPLAYERACTOR
#include "MetroidPrime/ScriptObjects/CScriptActor.hpp"
#include "MetroidPrime/CAnimRes.hpp"
#include "MetroidPrime/Player/CPlayerState.hpp"
#include "Kyoto/TToken.hpp"
#include "rstl/optional_object.hpp"
#include "rstl/single_ptr.hpp"
class CModel;
class CTexture;
class CScriptPlayerActor : public CScriptActor {
public:
CScriptPlayerActor(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, const CAnimRes& animRes, const CModelData& mData,
const CAABox& aabb, bool setBoundingBox, const CMaterialList& matList,
float mass, float zMomentum, const CHealthInfo& hInfo,
const CDamageVulnerability& dVuln, const CActorParameters& aParams,
bool loop, bool active, uint flags, CPlayerState::EBeamId beam);
// CEntity
~CScriptPlayerActor() override;
void Accept(IVisitor& visitor) override;
void Think(float dt, CStateManager& mgr) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
void SetActive(bool active) override;
// CActor
void PreRender(CStateManager&, const CFrustumPlanes&) override;
void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
void Render(const CStateManager&) const override;
void TouchModels(const CStateManager& mgr) const;
private:
uint GetSuitCharIdx(const CStateManager& mgr, CPlayerState::EPlayerSuit suit) const;
uint GetNextSuitCharIdx(const CStateManager& mgr) const;
void LoadSuit(uint charIdx);
void LoadBeam(CPlayerState::EBeamId beam);
void PumpBeamModel(const CStateManager& mgr);
void PumpSuitModel(const CStateManager& mgr);
void BuildBeamModelData();
void SetupOfflineModelData();
void SetupOnlineModelData();
void TouchModels_Internal(const CStateManager& mgr) const;
bool HasGunModelData() const;
void SetupEnvFx(const CStateManager& mgr, bool set);
void SetIntoStateManager(CStateManager& mgr, bool set);
CAnimRes x2e8_suitRes;
CPlayerState::EBeamId x304_beam;
CPlayerState::EPlayerSuit x308_suit;
CPlayerState::EBeamId x30c_setBeamId;
int x310_loadedCharIdx;
rstl::single_ptr< CModelData > x314_beamModelData;
rstl::single_ptr< CModelData > x318_suitModelData;
CToken* x31c_beamModel;
CToken* x320_suitModel;
CToken* x324_suitSkin;
rstl::optional_object< TLockedToken< CModel > > x328_backupModelData;
rstl::optional_object< TCachedToken< CTexture > > x338_phazonIndirectTexture;
uint x348_deallocateBackupCountdown;
float x34c_phazonOffsetAngle;
uint x350_flags;
bool x354_24_setBoundingBox : 1;
bool x354_25_deferOnlineModelData : 1;
bool x354_26_deferOfflineModelData : 1;
bool x354_27_beamModelLoading : 1;
bool x354_28_suitModelLoading : 1;
bool x354_29_loading : 1;
bool x354_30_enableLoading : 1;
bool x354_31_deferOnlineLoad : 1;
bool x355_24_areaTrackingLoad : 1;
TUniqueId x356_nextPlayerActor;
};
CHECK_SIZEOF(CScriptPlayerActor, 0x358)
#endif // _CSCRIPTPLAYERACTOR