40 void calcVehicleSpeed();
41 bool start(Action action);
45 m_hitDepth = hitDepth;
52 [[nodiscard]]
const Flags &flags()
const {
65 f32 initialAngleIncrement;
66 f32 minAngleIncrement;
68 f32 initialMultiplierDecrement;
69 f32 slowdownThreshold;
76 typedef void (
KartAction::*EndActionFunc)(
bool arg);
78 void calcSideFromHitDepth();
79 void calcSideFromHitDepthAndTranslation();
84 void calcEndAction(
bool endArg);
88 void startLaunch(f32 extVelScalar, f32 extVelKart, f32 extVelBike, f32 numRotations,
90 void activateCrush(
u16 timer);
92 void applyStartSpeed();
93 void setRotation(
size_t idx);
104 void startLargeFlipAction();
106 void startLongPressAction();
107 void startShortPressAction();
115 bool calcLaunchAction();
116 bool calcLargeFlipAction();
117 bool calcPressAction();
123 void endStub(
bool arg);
124 void endAction1(
bool arg);
125 void endLaunchAction(
bool arg);
128 Action m_currentAction;
129 f32 m_rotationDirection;
140 StartActionFunc m_onStart;
141 CalcActionFunc m_onCalc;
142 EndActionFunc m_onEnd;
150 f32 m_angleIncrement;
152 f32 m_multiplierDecrement;
156 u16 m_framesFlipping;
159 static constexpr size_t MAX_ACTION =
static_cast<size_t>(Action::Max);
161 static const std::array<ActionParams, MAX_ACTION> s_actionParams;
162 static const std::array<RotationParams, 5> s_rotationParams;
164 static const std::array<StartActionFunc, MAX_ACTION> s_onStart;
165 static const std::array<CalcActionFunc, MAX_ACTION> s_onCalc;
166 static const std::array<EndActionFunc, MAX_ACTION> s_onEnd;