#pragma once #include #include "Runtime/GCNTypes.hpp" #include "Runtime/Character/CBoneTracking.hpp" #include "Runtime/Weapon/CProjectileInfo.hpp" #include "Runtime/World/CPatterned.hpp" #include namespace urde::MP1 { enum class EBehaveType { Zero, One, Two, Three }; class CChozoGhost : public CPatterned { public: class CBehaveChance { u32 x0_propertyCount; float x4_; float x8_; float xc_; float x10_; float x14_; float x18_; u32 x1c_; public: CBehaveChance(CInputStream&); u32 GetBehave(EBehaveType type, CStateManager& mgr) const; }; private: float x568_; float x56c_; float x570_; float x574_; CProjectileInfo x578_; CProjectileInfo x5a0_; CBehaveChance x5c8_; CBehaveChance x5e8_; CBehaveChance x608_; s16 x628_; float x62c_; s16 x630_; s16 x632_; float x634_; float x638_; u32 x63c_; TLockedToken x640_; s16 x650_; float x654_; float x658_; u32 x65c_; u32 x660_; union { struct { bool x664_24_ : 1; bool x664_25_ : 1; bool x664_26_ : 1; bool x664_27_ : 1; bool x664_28_ : 1; bool x664_29_ : 1; bool x664_30_ : 1; bool x664_31_ : 1; bool x665_24_ : 1; bool x665_25_ : 1; bool x665_26_ : 1; bool x665_27_ : 1; bool x665_28_ : 1; bool x665_29_ : 1; }; u32 _dummy = 0; }; float x668_ = 0.f; float x66c_ = 0.f; float x670_ = 0.f; TUniqueId x674_ = kInvalidUniqueId; float x678_ = 0.f; u32 x67c_ = -1; u32 x680_ = 0; float x684_ = 1.f; CSteeringBehaviors x688_; CBoneTracking x68c_boneTracking; TUniqueId x6c4_ = kInvalidUniqueId; float x6c8_ = 0.f; zeus::CVector3f x6cc_; u32 x6d8_ = 1; u32 x6dc_; public: DEFINE_PATTERNED(ChozoGhost) CChozoGhost(TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&, CModelData&&, const CActorParameters&, const CPatternedInfo&, float, float, float, float, CAssetId, const CDamageInfo&, CAssetId, const CDamageInfo&, const CChozoGhost::CBehaveChance&, const CChozoGhost::CBehaveChance&, const CBehaveChance&, u16, float, u16, u16, u32, float, u32, float, CAssetId, s16, float, float, u32, u32); float GetGravityConstant() const { return 60.f; } }; } // namespace urde::MP1