Files

44 lines
1.2 KiB
C++

#ifndef _CBSJUMP
#define _CBSJUMP
#include "MetroidPrime/BodyState/CBodyState.hpp"
#include "Kyoto/Math/CVector3f.hpp"
class CBSJump : public CBodyState {
public:
CBSJump();
~CBSJump() {}
// CBodyState
bool IsInAir(const CBodyController& bc) const override;
bool IsMoving() const override;
bool ApplyHeadTracking() const override;
bool ApplyAnimationDeltas() const override;
bool CanShoot() const override;
void Start(CBodyController& bc, CStateManager& mgr) override;
pas::EAnimationState UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) override;
void Shutdown(CBodyController& bc) override;
private:
pas::EAnimationState GetBodyStateTransition(float dt, CBodyController& bc);
uchar CheckForWallJump(CBodyController& bc, CStateManager& mgr);
void CheckForLand(CBodyController& bc, CStateManager& mgr);
void PlayJumpLoop(CStateManager& mgr, CBodyController& bc);
pas::EJumpState x4_state;
pas::EJumpType x8_jumpType;
CVector3f xc_waypoint1;
CVector3f x18_velocity;
CVector3f x24_waypoint2;
bool x30_24_applyLaunchVel : 1;
bool x30_25_wallJump : 1;
bool x30_26_wallBounceRight : 1;
bool x30_27_hasWallBounced : 1;
bool x30_28_startInJumpLoop : 1;
};
CHECK_SIZEOF(CBSJump, 0x34)
#endif // _CBSJUMP