mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
43 lines
1.3 KiB
C++
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
|