Files

43 lines
1.3 KiB
C++

#ifndef _CBSHURLED
#define _CBSHURLED
#include "MetroidPrime/BodyState/CBodyState.hpp"
#include "Kyoto/Math/CVector3f.hpp"
class CBSHurled : public CBodyState {
public:
CBSHurled();
~CBSHurled() override {};
// CBodyState
bool IsMoving() const override;
bool ApplyHeadTracking() const override;
void Start(CBodyController& bc, CStateManager& mgr) override;
pas::EAnimationState UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) override;
void Shutdown(CBodyController& bc) override;
bool IsInAir(const CBodyController& bc) const override;
private:
pas::EAnimationState GetBodyStateTransition(float dt, CBodyController& bc);
void Recover(CStateManager& mgr, CBodyController& bc, pas::EHurledState state);
void PlayStrikeWallAnimation(CBodyController& bc, CStateManager& mgr);
void PlayLandAnimation(CBodyController& bc, CStateManager& mgr);
bool ShouldStartStrikeWall(CBodyController& bc) const;
bool ShouldStartLand(float dt, CBodyController& bc) const;
pas::EHurledState x4_state;
float x8_knockAngle;
int xc_animSeries;
float x10_rotateSpeed;
float x14_remTime;
float x18_curTime;
mutable CVector3f x1c_lastTranslation;
mutable float x28_landedDur;
bool x2c_24_needsRecover : 1;
};
CHECK_SIZEOF(CBSHurled, 0x30)
#endif // _CBSHURLED