prime/include/MetroidPrime/Enemies/CAmbientAI.hpp

52 lines
1.5 KiB
C++

#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<CAABox> 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