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

#include <KartSub.hh>

Description

Hosts a few classes and the high level per-frame calc functions.

Definition at line 11 of file KartSub.hh.

Inheritance diagram for Kinoko::Kart::KartSub:

Public Member Functions

void createSubsystems (bool isBike, const KartParam::Stats &stats)
void copyPointers (KartAccessor &pointers)
 Called during static construction of KartObject to synchronize the pointers.
void init ()
void initAABB (KartAccessor &accessor, KartObject *object)
void initPhysicsValues ()
void resetPhysics ()
void calcPass0 ()
 The first phase of physics computations on each frame.
void calcPass1 ()
 The second phase of physics computations on each frame.Handles the second-half of physics calculations. This mainly includes collision detection, as well as suspension physics.
void resizeAABB (f32 radiusScale)
void addFloor (const CollisionData &, bool)
void updateSuspOvertravel (const EGG::Vector3f &suspOvertravel)
void tryEndHWG ()
void calcMovingObj ()
void calcMovingWater ()

Getters

f32 someScale ()

Private Attributes

KartMovem_move
KartActionm_action
KartCollidem_collide
KartStatem_state
EGG::Vector3f m_maxSuspOvertravel
EGG::Vector3f m_minSuspOvertravel
u16 m_floorCollisionCount
u16 m_movingObjCollisionCount
u16 m_movingWaterCollisionCount
EGG::Vector3f m_objVel
s16 m_sideCollisionTimer
 Number of frames to apply movement from wall collision.
f32 m_colPerpendicularity
 Dot product between floor and colliding wall normals.
f32 m_someScale

Static Private Attributes

static constexpr f32 DT = 1.0f
 Delta time.

Additional Inherited Members

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
Status & status ()
const Status & status () const
const EGG::Vector3fwheelPos (u16 idx) const
const EGG::Vector3fwheelEdgePos (u16 idx) const
f32 cameraDistY () const
s32 hopStickX () const
KartParam::Stats::DriftType vehicleType () const
void apply (size_t idx)
static std::list< KartObjectProxy *, EGG::Allocator< KartObjectProxy * > > & proxyList ()

Constructor & Destructor Documentation

◆ ~KartSub()

Kinoko::Kart::KartSub::~KartSub ( )
0x80598AC8

Definition at line 25 of file KartSub.cc.

Member Function Documentation

◆ addFloor()

void Kinoko::Kart::KartSub::addFloor ( const CollisionData & colData,
bool  )
0x805980D8

Definition at line 353 of file KartSub.cc.

◆ calcMovingObj()

void Kinoko::Kart::KartSub::calcMovingObj ( )
0x80597A88

Definition at line 410 of file KartSub.cc.

◆ calcMovingWater()

void Kinoko::Kart::KartSub::calcMovingWater ( )
0x80597D4C

Definition at line 421 of file KartSub.cc.

◆ calcPass0()

void Kinoko::Kart::KartSub::calcPass0 ( )
0x80596480

The first phase of physics computations on each frame.

Stage: All

Handles the first-half of physics calculations. This includes input processing, subsequent position/speed updates, as well as responding to last frame's collisions.

Definition at line 103 of file KartSub.cc.

◆ calcPass1()

void Kinoko::Kart::KartSub::calcPass1 ( )
0x80596CFC

The second phase of physics computations on each frame.Handles the second-half of physics calculations. This mainly includes collision detection, as well as suspension physics.

Stage: All

Definition at line 177 of file KartSub.cc.

◆ copyPointers()

void Kinoko::Kart::KartSub::copyPointers ( KartAccessor & pointers)
0x80596454

Called during static construction of KartObject to synchronize the pointers.

Definition at line 44 of file KartSub.cc.

◆ createSubsystems()

void Kinoko::Kart::KartSub::createSubsystems ( bool isBike,
const KartParam::Stats & stats )
0x80595D48

Definition at line 33 of file KartSub.cc.

◆ init()

void Kinoko::Kart::KartSub::init ( )
0x80595F78

Definition at line 52 of file KartSub.cc.

◆ initAABB()

void Kinoko::Kart::KartSub::initAABB ( KartAccessor & accessor,
KartObject * object )
0x8059828C

Definition at line 62 of file KartSub.cc.

◆ initPhysicsValues()

void Kinoko::Kart::KartSub::initPhysicsValues ( )
0x80597934

Definition at line 71 of file KartSub.cc.

◆ resetPhysics()

void Kinoko::Kart::KartSub::resetPhysics ( )
0x8059617C

Definition at line 77 of file KartSub.cc.

◆ resizeAABB()

void Kinoko::Kart::KartSub::resizeAABB ( f32 radiusScale)
0x80598338

Definition at line 347 of file KartSub.cc.

◆ someScale()

f32 Kinoko::Kart::KartSub::someScale ( )
inlinenodiscard

Definition at line 34 of file KartSub.hh.

◆ tryEndHWG()

void Kinoko::Kart::KartSub::tryEndHWG ( )
0x80598744

Definition at line 383 of file KartSub.cc.

◆ updateSuspOvertravel()

void Kinoko::Kart::KartSub::updateSuspOvertravel ( const EGG::Vector3f & suspOvertravel)
0x805979EC

Definition at line 377 of file KartSub.cc.

Member Data Documentation

◆ DT

f32 Kinoko::Kart::KartSub::DT = 1.0f
staticconstexprprivate

Delta time.

Note
This object is labeled as having a poor name. It should be renamed to better represent its purpose.

Definition at line 54 of file KartSub.hh.

◆ m_action

KartAction* Kinoko::Kart::KartSub::m_action
private

Definition at line 41 of file KartSub.hh.

◆ m_collide

KartCollide* Kinoko::Kart::KartSub::m_collide
private

Definition at line 42 of file KartSub.hh.

◆ m_colPerpendicularity

f32 Kinoko::Kart::KartSub::m_colPerpendicularity
private

Dot product between floor and colliding wall normals.

Definition at line 51 of file KartSub.hh.

◆ m_floorCollisionCount

u16 Kinoko::Kart::KartSub::m_floorCollisionCount
private

Definition at line 46 of file KartSub.hh.

◆ m_maxSuspOvertravel

EGG::Vector3f Kinoko::Kart::KartSub::m_maxSuspOvertravel
private

Definition at line 44 of file KartSub.hh.

◆ m_minSuspOvertravel

EGG::Vector3f Kinoko::Kart::KartSub::m_minSuspOvertravel
private

Definition at line 45 of file KartSub.hh.

◆ m_move

KartMove* Kinoko::Kart::KartSub::m_move
private

Definition at line 40 of file KartSub.hh.

◆ m_movingObjCollisionCount

u16 Kinoko::Kart::KartSub::m_movingObjCollisionCount
private

Definition at line 47 of file KartSub.hh.

◆ m_movingWaterCollisionCount

u16 Kinoko::Kart::KartSub::m_movingWaterCollisionCount
private

Definition at line 48 of file KartSub.hh.

◆ m_objVel

EGG::Vector3f Kinoko::Kart::KartSub::m_objVel
private

Definition at line 49 of file KartSub.hh.

◆ m_sideCollisionTimer

s16 Kinoko::Kart::KartSub::m_sideCollisionTimer
private

Number of frames to apply movement from wall collision.

Definition at line 50 of file KartSub.hh.

◆ m_someScale

f32 Kinoko::Kart::KartSub::m_someScale
private

Definition at line 52 of file KartSub.hh.

◆ m_state

KartState* Kinoko::Kart::KartSub::m_state
private

Definition at line 43 of file KartSub.hh.