#ifndef _CAMBIENTAI #define _CAMBIENTAI #include "MetroidPrime/CPhysicsActor.hpp" #include "MetroidPrime/CHealthInfo.hpp" #include "MetroidPrime/CDamageVulnerability.hpp" class CAmbientAI : public CPhysicsActor { public: CAmbientAI(TUniqueId uid, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf, const CModelData& mData, const CAABox& aabox, const CMaterialList& materialList, float mass, const CHealthInfo& hInfo, const CDamageVulnerability& dVuln, const CActorParameters& aParms, float alertRange, float impactRange, int alertAnim, int impactAnim, bool Active); /* CEntity */ void Accept(IVisitor& visitor); void Think(float dt, CStateManager& mgr); void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr); /* CActor */ CHealthInfo* HealthInfo(CStateManager& mgr); const CDamageVulnerability* GetDamageVulnerability() const; /* CPhysicsActor */ void Touch(CActor& actor, CStateManager& mgr); rstl::optional_object GetTouchBounds() const; void RandomizePlaybackRate(CStateManager& mgr); private: enum EAnimationState { kAS_Ready, kAS_Alert, kAS_Impact, }; CHealthInfo x258_initialHealthInfo; CHealthInfo x260_healthInfo; CDamageVulnerability x268_dVuln; EAnimationState x2d0_animState; float x2d4_alertRange; float x2d8_impactRange; s32 x2dc_currentAnim; s32 x2e0_alertAnim; s32 x2e4_impactAnim; bool x2e8_24_dead : 1; bool x2e8_25_animating : 1; }; #endif // _CAMBIENTAI