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

Description

Definition at line 162 of file RailInterpolator.hh.

Inheritance diagram for Kinoko::Field::RailSmoothInterpolator:

Public Member Functions

 RailSmoothInterpolator (f32 speed, u32 idx)
void init (f32 t, u32 idx) override
Status calc () override
void setCurrVel (f32 speed) override
f32 getCurrVel () override
void evalCubicBezierOnPath (f32 t, EGG::Vector3f &currDir, EGG::Vector3f &curTangentDir) override
void getPathLocation (f32 t, s16 &idx, f32 &len) override
f32 getCurrSegmentLength () const override
Public Member Functions inherited from Kinoko::Field::RailInterpolator
 RailInterpolator (f32 speed, u32 idx)
void setPerPointVelocities (bool isSet)
void setT (f32 t)
void reverseDirection ()
const EGG::Vector3ffloorNrm (size_t idx) const
f32 railLength () const
const System::MapdataPointInfo::PointcurPoint () const
const System::MapdataPointInfo::PointnextPoint () const
s16 railIdx () const
u16 pointCount () const
f32 speed () const
const EGG::Vector3fcurPos () const
const EGG::Vector3fcurTangentDir () const
f32 currVel () const
f32 segmentT () const
bool isMovementDirectionForward () const
s16 curPointIdx () const
s16 nextPointIdx () const

Private Member Functions

void calcCubicBezier (f32 t, u32 currIdx, u32 nextIdx, EGG::Vector3f &pos, EGG::Vector3f &dir) const
EGG::Vector3f calcCubicBezierPos (f32 t, const RailSplineTransition &trans) const
EGG::Vector3f calcCubicBezierTangentDir (f32 t, const RailSplineTransition &trans) const
f32 calcT (f32 t) const
void calcNextSegment ()

Private Attributes

std::span< const RailSplineTransitionm_transitions
u32 m_estimatorSampleCount
f32 m_estimatorStep
std::span< const f32 > m_pathPercentages
EGG::Vector3f m_prevPos
f32 m_velocity

Additional Inherited Members

Public Types inherited from Kinoko::Field::RailInterpolator
enum class  Status {
  InProgress = 0 ,
  SegmentEnd = 1 ,
  ChangingDirection = 2
}
Protected Member Functions inherited from Kinoko::Field::RailInterpolator
void updateVel ()
void calcVelocities ()
bool shouldChangeDirection () const
void calcDirectionChange ()
void calcNextIndices ()
Protected Attributes inherited from Kinoko::Field::RailInterpolator
s16 m_railIdx
u16 m_pointCount
std::span< const System::MapdataPointInfo::Pointm_points
bool m_isOscillating
f32 m_speed
bool m_usePerPointVelocities
EGG::Vector3f m_curPos
EGG::Vector3f m_curTangentDir
f32 m_currVel
f32 m_prevPointVel
f32 m_nextPointVel
f32 m_currSegmentVel
f32 m_segmentT
bool m_movementDirectionForward
s16 m_currPointIdx
s16 m_nextPointIdx
bool m_4a

Constructor & Destructor Documentation

◆ RailSmoothInterpolator()

Kinoko::Field::RailSmoothInterpolator::RailSmoothInterpolator ( f32 speed,
u32 idx )
0x806EE830

Definition at line 255 of file RailInterpolator.cc.

◆ ~RailSmoothInterpolator()

Kinoko::Field::RailSmoothInterpolator::~RailSmoothInterpolator ( )
overridedefault0x806EF944

Member Function Documentation

◆ calc()

RailInterpolator::Status Kinoko::Field::RailSmoothInterpolator::calc ( )
overridevirtual0x806EEBEC

Implements Kinoko::Field::RailInterpolator.

Definition at line 297 of file RailInterpolator.cc.

◆ calcCubicBezier()

void Kinoko::Field::RailSmoothInterpolator::calcCubicBezier ( f32 t,
u32 currIdx,
u32 nextIdx,
EGG::Vector3f & pos,
EGG::Vector3f & dir ) const
private0x806EF224

Definition at line 404 of file RailInterpolator.cc.

◆ calcCubicBezierPos()

EGG::Vector3f Kinoko::Field::RailSmoothInterpolator::calcCubicBezierPos ( f32 t,
const RailSplineTransition & trans ) const
nodiscardprivate0x806EF350

Definition at line 414 of file RailInterpolator.cc.

◆ calcCubicBezierTangentDir()

EGG::Vector3f Kinoko::Field::RailSmoothInterpolator::calcCubicBezierTangentDir ( f32 t,
const RailSplineTransition & trans ) const
nodiscardprivate0x806EF454

Definition at line 427 of file RailInterpolator.cc.

◆ calcNextSegment()

void Kinoko::Field::RailSmoothInterpolator::calcNextSegment ( )
private0x806EF664

Definition at line 472 of file RailInterpolator.cc.

◆ calcT()

f32 Kinoko::Field::RailSmoothInterpolator::calcT ( f32 t) const
nodiscardprivate0x806EF0F8

Definition at line 444 of file RailInterpolator.cc.

◆ evalCubicBezierOnPath()

void Kinoko::Field::RailSmoothInterpolator::evalCubicBezierOnPath ( f32 t,
EGG::Vector3f & currDir,
EGG::Vector3f & curTangentDir )
overridevirtual0x806EEEBC

Implements Kinoko::Field::RailInterpolator.

Definition at line 353 of file RailInterpolator.cc.

◆ getCurrSegmentLength()

f32 Kinoko::Field::RailSmoothInterpolator::getCurrSegmentLength ( ) const
inlinenodiscardoverridevirtual0x806EF09C

Implements Kinoko::Field::RailInterpolator.

Definition at line 181 of file RailInterpolator.hh.

◆ getCurrVel()

f32 Kinoko::Field::RailSmoothInterpolator::getCurrVel ( )
inlinenodiscardoverridevirtual0x806EF93C

Implements Kinoko::Field::RailInterpolator.

Definition at line 172 of file RailInterpolator.hh.

◆ getPathLocation()

void Kinoko::Field::RailSmoothInterpolator::getPathLocation ( f32 t,
s16 & idx,
f32 & len )
overridevirtual0x806EEFA0

Implements Kinoko::Field::RailInterpolator.

Definition at line 371 of file RailInterpolator.cc.

◆ init()

void Kinoko::Field::RailSmoothInterpolator::init ( f32 t,
u32 idx )
overridevirtual0x806EE924

Implements Kinoko::Field::RailInterpolator.

Definition at line 269 of file RailInterpolator.cc.

◆ setCurrVel()

void Kinoko::Field::RailSmoothInterpolator::setCurrVel ( f32 speed)
overridevirtual0x806EEB94

Implements Kinoko::Field::RailInterpolator.

Definition at line 342 of file RailInterpolator.cc.

Member Data Documentation

◆ m_estimatorSampleCount

u32 Kinoko::Field::RailSmoothInterpolator::m_estimatorSampleCount
private

Definition at line 196 of file RailInterpolator.hh.

◆ m_estimatorStep

f32 Kinoko::Field::RailSmoothInterpolator::m_estimatorStep
private

Definition at line 197 of file RailInterpolator.hh.

◆ m_pathPercentages

std::span<const f32> Kinoko::Field::RailSmoothInterpolator::m_pathPercentages
private

Definition at line 198 of file RailInterpolator.hh.

◆ m_prevPos

EGG::Vector3f Kinoko::Field::RailSmoothInterpolator::m_prevPos
private

Definition at line 199 of file RailInterpolator.hh.

◆ m_transitions

std::span<const RailSplineTransition> Kinoko::Field::RailSmoothInterpolator::m_transitions
private

Definition at line 195 of file RailInterpolator.hh.

◆ m_velocity

f32 Kinoko::Field::RailSmoothInterpolator::m_velocity
private

Definition at line 200 of file RailInterpolator.hh.