A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
Kart::KartAction Class Reference

Description

Definition at line 25 of file KartAction.hh.

Inheritance diagram for Kart::KartAction:

Classes

struct  ActionParams
 Parameters specific to an action ID. More...
 
struct  RotationParams
 

Public Types

enum class  eFlags {
  Landing = 0 ,
  Rotating = 3 ,
  LandingFromFlip = 5
}
 
typedef EGG::TBitFlag< u32, eFlags > Flags
 

Public Member Functions

void init ()
 
void calc ()
 
void calcVehicleSpeed ()
 
bool start (Action action)
 Starts an action.
 
void startRotation (size_t idx)
 Initializes rotation parameters.
 
void setHitDepth (const EGG::Vector3f &hitDepth)
 
void setTranslation (const EGG::Vector3f &v)
 
const Flagsflags () const
 

Private Types

typedef void(KartAction::*) StartActionFunc()
 
typedef bool(KartAction::*) CalcActionFunc()
 
typedef void(KartAction::*) EndActionFunc(bool arg)
 

Private Member Functions

void calcSideFromHitDepth ()
 
void calcSideFromHitDepthAndTranslation ()
 
void end ()
 
bool calcCurrentAction ()
 Executes a frame of the current action.
 
void calcEndAction (bool endArg)
 
bool calcRotation ()
 
void calcUp ()
 
void calcLanding ()
 
void startLaunch (f32 extVelScalar, f32 extVelKart, f32 extVelBike, f32 numRotations, u32 param6)
 
void activateCrush (u16 timer)
 
void applyStartSpeed ()
 
void setRotation (size_t idx)
 
void startStub ()
 
void startAction1 ()
 
void startAction2 ()
 
void startAction3 ()
 
void startAction5 ()
 
void startLargeFlipAction ()
 
void startAction9 ()
 
void startLongPressAction ()
 
void startShortPressAction ()
 
bool calcStub ()
 
bool calcAction1 ()
 
bool calcLaunchAction ()
 
bool calcLargeFlipAction ()
 
bool calcPressAction ()
 
void endStub (bool arg)
 
void endAction1 (bool arg)
 
void endLaunchAction (bool arg)
 
- Private Member Functions inherited from Kart::KartObjectProxy
void setPos (const EGG::Vector3f &pos)
 
void setRot (const EGG::Quatf &q)
 
void setInertiaScale (const EGG::Vector3f &scale)
 
KartActionaction ()
 
const KartActionaction () const
 
KartBodybody ()
 
const KartBodybody () const
 
KartCollidecollide ()
 
const KartCollidecollide () const
 
CollisionGroupcollisionGroup ()
 
const CollisionGroupcollisionGroup () const
 
KartMovemove ()
 
const KartMovemove () const
 
KartHalfPipehalfPipe ()
 
const KartHalfPipehalfPipe () const
 
KartScalekartScale ()
 
const KartScalekartScale () const
 
KartJumpjump ()
 
const KartJumpjump () const
 
KartParamparam ()
 
const KartParamparam () const
 
const BSPbsp () const
 
KartPhysicsphysics ()
 
const KartPhysicsphysics () const
 
KartDynamicsdynamics ()
 
const KartDynamicsdynamics () const
 
KartStatestate ()
 
const KartStatestate () const
 
KartSubsub ()
 
const KartSubsub () const
 
KartSuspensionsuspension (u16 suspIdx)
 
const KartSuspensionsuspension (u16 suspIdx) const
 
KartSuspensionPhysicssuspensionPhysics (u16 suspIdx)
 
const KartSuspensionPhysicssuspensionPhysics (u16 suspIdx) const
 
KartTiretire (u16 tireIdx)
 
const KartTiretire (u16 tireIdx) const
 
WheelPhysicstirePhysics (u16 tireIdx)
 
const WheelPhysicstirePhysics (u16 tireIdx) const
 
CollisionDatacollisionData ()
 
const CollisionDatacollisionData () const
 
CollisionDatacollisionData (u16 tireIdx)
 
const CollisionDatacollisionData (u16 tireIdx) const
 
const System::KPadinputs () const
 
Render::KartModelmodel ()
 
const Render::KartModelmodel () const
 
Field::ObjectCollisionKartobjectCollisionKart ()
 
const Field::ObjectCollisionKartobjectCollisionKart () const
 
Field::BoxColUnitboxColUnit ()
 
const Field::BoxColUnitboxColUnit () const
 
const EGG::Vector3fscale () const
 
const EGG::Matrix34fpose () const
 
EGG::Vector3f bodyFront () const
 Returns the third column of the rotation matrix, which is the facing vector.
 
EGG::Vector3f bodyForward () const
 Returns the first column of the rotation matrix, which is the "right" direction.
 
EGG::Vector3f bodyUp () const
 Returns the second column of the rotation matrix, which is the "up" direction.
 
const EGG::Vector3fcomponentXAxis () const
 
const EGG::Vector3fcomponentYAxis () const
 
const EGG::Vector3fcomponentZAxis () const
 
const EGG::Vector3fpos () const
 
const EGG::Vector3fprevPos () const
 
const EGG::QuatffullRot () const
 
const EGG::Vector3fextVel () const
 
const EGG::Vector3fintVel () const
 
const EGG::Vector3fvelocity () const
 
f32 speed () const
 
f32 acceleration () const
 
f32 softSpeedLimit () const
 
const EGG::QuatfmainRot () const
 
const EGG::Vector3fangVel2 () const
 
bool isBike () const
 
u16 suspCount () const
 
u16 tireCount () const
 
bool hasFloorCollision (const WheelPhysics *wheelPhysics) const
 
std::pair< EGG::Vector3f, EGG::Vector3fgetCannonPosRot ()
 
f32 speedRatio () const
 
f32 speedRatioCapped () const
 
bool isInRespawn () const
 
Field::KCLTypeMask wallKclType () const
 
u32 wallKclVariant () const
 
Statusstatus ()
 
const Statusstatus () const
 
void apply (size_t idx)
 

Private Attributes

EGG::Vector3f m_side
 
Action m_currentAction
 
f32 m_rotationDirection
 
f32 m_targetRot
 
EGG::Vector3f m_hitDepth
 
EGG::Vector3f m_rotAxis
 
EGG::Vector3f m_translation
 
f32 m_velPitch
 
f32 m_pitch
 
f32 m_deltaPitch
 
f32 m_flipPhase
 
StartActionFunc m_onStart
 
CalcActionFunc m_onCalc
 
EndActionFunc m_onEnd
 
EGG::Quatf m_rotation
 
const ActionParamsm_actionParams
 
u32 m_frame
 
u32 m_crushTimer
 
Flags m_flags
 
f32 m_currentAngle
 
f32 m_angleIncrement
 
f32 m_multiplier
 
f32 m_multiplierDecrement
 
f32 m_finalAngle
 
const RotationParamsm_rotationParams
 
EGG::Vector3f m_up
 
u16 m_framesFlipping
 
s16 m_priority
 

Static Private Attributes

static constexpr size_t MAX_ACTION = static_cast<size_t>(Action::Max)
 
static const std::array< ActionParams, MAX_ACTION > s_actionParams
 
static const std::array< RotationParams, 5 > s_rotationParams
 
static const std::array< StartActionFunc, MAX_ACTION > s_onStart
 
static const std::array< CalcActionFunc, MAX_ACTION > s_onCalc
 
static const std::array< EndActionFunc, MAX_ACTION > s_onEnd
 

Additional Inherited Members

- Static Private Member Functions inherited from Kart::KartObjectProxy
static std::list< KartObjectProxy * > & proxyList ()
 

Member Typedef Documentation

◆ CalcActionFunc

bool(KartAction::*) Kart::KartAction::CalcActionFunc()
private

Definition at line 74 of file KartAction.hh.

◆ EndActionFunc

void(KartAction::*) Kart::KartAction::EndActionFunc(bool arg)
private

Definition at line 75 of file KartAction.hh.

◆ Flags

Definition at line 32 of file KartAction.hh.

◆ StartActionFunc

void(KartAction::*) Kart::KartAction::StartActionFunc()
private

Definition at line 73 of file KartAction.hh.

Member Enumeration Documentation

◆ eFlags

enum class Kart::KartAction::eFlags
strong

Definition at line 27 of file KartAction.hh.

Constructor & Destructor Documentation

◆ KartAction()

Kart::KartAction::KartAction ( )
0x805672CC

Definition at line 15 of file KartAction.cc.

Member Function Documentation

◆ activateCrush()

void Kart::KartAction::activateCrush ( u16 timer)
private0x805696CC

Definition at line 248 of file KartAction.cc.

◆ applyStartSpeed()

void Kart::KartAction::applyStartSpeed ( )
private0x80567C68

Definition at line 254 of file KartAction.cc.

◆ calc()

void Kart::KartAction::calc ( )
0x805673B0

Definition at line 30 of file KartAction.cc.

◆ calcAction1()

bool Kart::KartAction::calcAction1 ( )
private0x80568204

Definition at line 365 of file KartAction.cc.

◆ calcCurrentAction()

bool Kart::KartAction::calcCurrentAction ( )
private0x80567A54

Executes a frame of the current action.

Returns
Whether or not the action should end.

Definition at line 157 of file KartAction.cc.

◆ calcEndAction()

void Kart::KartAction::calcEndAction ( bool endArg)
private0x80567A88

Definition at line 163 of file KartAction.cc.

◆ calcLanding()

void Kart::KartAction::calcLanding ( )
private

Definition at line 208 of file KartAction.cc.

◆ calcLargeFlipAction()

bool Kart::KartAction::calcLargeFlipAction ( )
private0x805692B4

Definition at line 398 of file KartAction.cc.

◆ calcLaunchAction()

bool Kart::KartAction::calcLaunchAction ( )
private0x80568AA8

Definition at line 375 of file KartAction.cc.

◆ calcPressAction()

bool Kart::KartAction::calcPressAction ( )
private0x80569A1C

Definition at line 481 of file KartAction.cc.

◆ calcRotation()

bool Kart::KartAction::calcRotation ( )
private0x80569DFC

Definition at line 175 of file KartAction.cc.

◆ calcSideFromHitDepth()

void Kart::KartAction::calcSideFromHitDepth ( )
private0x80569AE8

Definition at line 116 of file KartAction.cc.

◆ calcSideFromHitDepthAndTranslation()

void Kart::KartAction::calcSideFromHitDepthAndTranslation ( )
private0x80569B94

Definition at line 126 of file KartAction.cc.

◆ calcStub()

bool Kart::KartAction::calcStub ( )
private

Definition at line 360 of file KartAction.cc.

◆ calcUp()

void Kart::KartAction::calcUp ( )
private0x80569E9C

Definition at line 203 of file KartAction.cc.

◆ calcVehicleSpeed()

void Kart::KartAction::calcVehicleSpeed ( )
0x80567CE4

Definition at line 41 of file KartAction.cc.

◆ end()

void Kart::KartAction::end ( )
private0x80567B98

Definition at line 145 of file KartAction.cc.

◆ endAction1()

void Kart::KartAction::endAction1 ( bool arg)
private0x8056837C

Definition at line 496 of file KartAction.cc.

◆ endLaunchAction()

void Kart::KartAction::endLaunchAction ( bool arg)
private0x80568C7C0x805686DC

Definition at line 503 of file KartAction.cc.

◆ endStub()

void Kart::KartAction::endStub ( bool arg)
private

Definition at line 493 of file KartAction.cc.

◆ flags()

const Flags & Kart::KartAction::flags ( ) const
inlinenodiscard

Definition at line 51 of file KartAction.hh.

◆ init()

void Kart::KartAction::init ( )
0x8056739C

Definition at line 24 of file KartAction.cc.

◆ setHitDepth()

void Kart::KartAction::setHitDepth ( const EGG::Vector3f & hitDepth)
inline

Definition at line 43 of file KartAction.hh.

◆ setRotation()

void Kart::KartAction::setRotation ( size_t idx)
private0x80569DB4

Definition at line 262 of file KartAction.cc.

◆ setTranslation()

void Kart::KartAction::setTranslation ( const EGG::Vector3f & v)
inline

Definition at line 47 of file KartAction.hh.

◆ start()

bool Kart::KartAction::start ( Action action)
0x805675DC

Starts an action.

Parameters
actionThe action to start.
Returns
Whether or not the action was started.

Definition at line 49 of file KartAction.cc.

◆ startAction1()

void Kart::KartAction::startAction1 ( )
private0x80567FB4

Definition at line 280 of file KartAction.cc.

◆ startAction2()

void Kart::KartAction::startAction2 ( )
private0x8056865C

Definition at line 285 of file KartAction.cc.

◆ startAction3()

void Kart::KartAction::startAction3 ( )
private0x80568718

Definition at line 295 of file KartAction.cc.

◆ startAction5()

void Kart::KartAction::startAction5 ( )
private0x80568FA4

Definition at line 306 of file KartAction.cc.

◆ startAction9()

void Kart::KartAction::startAction9 ( )
private0x80568000

Definition at line 334 of file KartAction.cc.

◆ startLargeFlipAction()

void Kart::KartAction::startLargeFlipAction ( )
private0x805690A0

Definition at line 316 of file KartAction.cc.

◆ startLaunch()

void Kart::KartAction::startLaunch ( f32 extVelScalar,
f32 extVelKart,
f32 extVelBike,
f32 numRotations,
u32 param6 )
private0x80568794

Definition at line 223 of file KartAction.cc.

◆ startLongPressAction()

void Kart::KartAction::startLongPressAction ( )
private0x80569774

Definition at line 339 of file KartAction.cc.

◆ startRotation()

void Kart::KartAction::startRotation ( size_t idx)
0x80567D3C

Initializes rotation parameters.

Warning
The parameter is supposed to be an enum, but we discard it. This results in the arguments being off-by-one. Beware of zero!
Parameters
idxThe index for the rotation parameters.

Definition at line 102 of file KartAction.cc.

◆ startShortPressAction()

void Kart::KartAction::startShortPressAction ( )
private0x80569978

Definition at line 348 of file KartAction.cc.

◆ startStub()

void Kart::KartAction::startStub ( )
private

Definition at line 277 of file KartAction.cc.

Member Data Documentation

◆ m_actionParams

const ActionParams* Kart::KartAction::m_actionParams
private

Definition at line 144 of file KartAction.hh.

◆ m_angleIncrement

f32 Kart::KartAction::m_angleIncrement
private

Definition at line 149 of file KartAction.hh.

◆ m_crushTimer

u32 Kart::KartAction::m_crushTimer
private

Definition at line 146 of file KartAction.hh.

◆ m_currentAction

Action Kart::KartAction::m_currentAction
private

Definition at line 127 of file KartAction.hh.

◆ m_currentAngle

f32 Kart::KartAction::m_currentAngle
private

Definition at line 148 of file KartAction.hh.

◆ m_deltaPitch

f32 Kart::KartAction::m_deltaPitch
private

Definition at line 136 of file KartAction.hh.

◆ m_finalAngle

f32 Kart::KartAction::m_finalAngle
private

Definition at line 152 of file KartAction.hh.

◆ m_flags

Flags Kart::KartAction::m_flags
private

Definition at line 147 of file KartAction.hh.

◆ m_flipPhase

f32 Kart::KartAction::m_flipPhase
private

Definition at line 137 of file KartAction.hh.

◆ m_frame

u32 Kart::KartAction::m_frame
private

Definition at line 145 of file KartAction.hh.

◆ m_framesFlipping

u16 Kart::KartAction::m_framesFlipping
private

Definition at line 155 of file KartAction.hh.

◆ m_hitDepth

EGG::Vector3f Kart::KartAction::m_hitDepth
private

Definition at line 130 of file KartAction.hh.

◆ m_multiplier

f32 Kart::KartAction::m_multiplier
private

Definition at line 150 of file KartAction.hh.

◆ m_multiplierDecrement

f32 Kart::KartAction::m_multiplierDecrement
private

Definition at line 151 of file KartAction.hh.

◆ m_onCalc

CalcActionFunc Kart::KartAction::m_onCalc
private

Definition at line 140 of file KartAction.hh.

◆ m_onEnd

EndActionFunc Kart::KartAction::m_onEnd
private

Definition at line 141 of file KartAction.hh.

◆ m_onStart

StartActionFunc Kart::KartAction::m_onStart
private

Definition at line 139 of file KartAction.hh.

◆ m_pitch

f32 Kart::KartAction::m_pitch
private

Definition at line 135 of file KartAction.hh.

◆ m_priority

s16 Kart::KartAction::m_priority
private

Definition at line 156 of file KartAction.hh.

◆ m_rotation

EGG::Quatf Kart::KartAction::m_rotation
private

Definition at line 143 of file KartAction.hh.

◆ m_rotationDirection

f32 Kart::KartAction::m_rotationDirection
private

Definition at line 128 of file KartAction.hh.

◆ m_rotationParams

const RotationParams* Kart::KartAction::m_rotationParams
private

Definition at line 153 of file KartAction.hh.

◆ m_rotAxis

EGG::Vector3f Kart::KartAction::m_rotAxis
private

Definition at line 131 of file KartAction.hh.

◆ m_side

EGG::Vector3f Kart::KartAction::m_side
private

Definition at line 126 of file KartAction.hh.

◆ m_targetRot

f32 Kart::KartAction::m_targetRot
private

Definition at line 129 of file KartAction.hh.

◆ m_translation

EGG::Vector3f Kart::KartAction::m_translation
private

Definition at line 132 of file KartAction.hh.

◆ m_up

EGG::Vector3f Kart::KartAction::m_up
private

Definition at line 154 of file KartAction.hh.

◆ m_velPitch

f32 Kart::KartAction::m_velPitch
private

Definition at line 134 of file KartAction.hh.

◆ MAX_ACTION

size_t Kart::KartAction::MAX_ACTION = static_cast<size_t>(Action::Max)
staticconstexprprivate

Definition at line 158 of file KartAction.hh.

◆ s_actionParams

const std::array< KartAction::ActionParams, KartAction::MAX_ACTION > Kart::KartAction::s_actionParams
staticprivate
Initial value:
= {{
{0.98f, 0.98f, 1},
{0.98f, 0.98f, 2},
{0.96f, 0.96f, 4},
{0.0f, 0.96f, 4},
{0.0f, 0.98f, 4},
{0.0f, 0.96f, 4},
{0.0f, 0.96f, 4},
{0.0f, 0.0f, 6},
{0.0f, 0.99f, 6},
{0.98f, 0.98f, 3},
{0.98f, 0.98f, 3},
{1.0f, 1.0f, 5},
{0.0f, 0.0f, 3},
{0.0f, 0.0f, 3},
{0.0f, 0.0f, 3},
{0.98f, 0.98f, 3},
{0.0f, 0.0f, 3},
{0.98f, 0.98f, 3},
}}

Definition at line 160 of file KartAction.hh.

◆ s_onCalc

const std::array< KartAction::CalcActionFunc, KartAction::MAX_ACTION > Kart::KartAction::s_onCalc
staticprivate
Initial value:
= {{
&KartAction::calcStub,
&KartAction::calcAction1,
&KartAction::calcLaunchAction,
&KartAction::calcLaunchAction,
&KartAction::calcStub,
&KartAction::calcLaunchAction,
&KartAction::calcStub,
&KartAction::calcLargeFlipAction,
&KartAction::calcStub,
&KartAction::calcAction1,
&KartAction::calcStub,
&KartAction::calcStub,
&KartAction::calcPressAction,
&KartAction::calcStub,
&KartAction::calcPressAction,
&KartAction::calcStub,
&KartAction::calcStub,
&KartAction::calcStub,
}}

Definition at line 164 of file KartAction.hh.

◆ s_onEnd

const std::array< KartAction::EndActionFunc, KartAction::MAX_ACTION > Kart::KartAction::s_onEnd
staticprivate
Initial value:
= {{
&KartAction::endStub,
&KartAction::endAction1,
&KartAction::endLaunchAction,
&KartAction::endLaunchAction,
&KartAction::endStub,
&KartAction::endLaunchAction,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endAction1,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
&KartAction::endStub,
}}

Definition at line 165 of file KartAction.hh.

◆ s_onStart

const std::array< KartAction::StartActionFunc, KartAction::MAX_ACTION > Kart::KartAction::s_onStart
staticprivate
Initial value:
= {{
&KartAction::startStub,
&KartAction::startAction1,
&KartAction::startAction2,
&KartAction::startAction3,
&KartAction::startStub,
&KartAction::startAction5,
&KartAction::startStub,
&KartAction::startLargeFlipAction,
&KartAction::startStub,
&KartAction::startAction9,
&KartAction::startStub,
&KartAction::startStub,
&KartAction::startLongPressAction,
&KartAction::startStub,
&KartAction::startShortPressAction,
&KartAction::startStub,
&KartAction::startStub,
&KartAction::startStub,
}}

Definition at line 163 of file KartAction.hh.

◆ s_rotationParams

const std::array< KartAction::RotationParams, 5 > Kart::KartAction::s_rotationParams
staticprivate
Initial value:
= {{
{10.0f, 1.5f, 0.9f, 0.005f, 0.6f, 360.0f},
{11.0f, 1.5f, 0.9f, 0.0028f, 0.7f, 720.0f},
{11.0f, 1.5f, 0.9f, 0.0028f, 0.8f, 1080.0f},
{7.0f, 1.5f, 0.9f, 0.005f, 0.6f, 450.0f},
{9.0f, 1.5f, 0.9f, 0.0028f, 0.7f, 810.0f},
}}

Definition at line 161 of file KartAction.hh.