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