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

Description

Definition at line 112 of file Rail.hh.

Inheritance diagram for Kinoko::Field::RailSpline:

Public Member Functions

 RailSpline (u16 idx, System::MapdataPointInfo *info)
std::span< const f32 > getPathPercentages () const override
Public Member Functions inherited from Kinoko::Field::Rail
 Rail (u16 idx, System::MapdataPointInfo *info)
virtual ~Rail ()
void addPoint (f32 scale, const EGG::Vector3f &point)
void checkSphereFull ()
u16 pointCount () const
bool isOscillating () const
std::span< const System::MapdataPointInfo::Point > points () const
const EGG::Vector3f & pointPos (u16 idx) const
const EGG::Vector3f & floorNrm (u16 idx) const

Static Public Member Functions

static consteval u32 getEstimatorSampleCount ()
static consteval f32 getEstimatorStep ()

Private Member Functions

f32 getPathLength () const override
std::span< const RailLineTransition > getLinearTransitions () const override
std::span< const RailSplineTransition > getSplineTransitions () const override
void onPointsChanged () override
void onPointAdded () override
void invalidateTransitions (bool lastOnly)
void calcCubicBezierControlPoints (const EGG::Vector3f &p0, const EGG::Vector3f &p1, const EGG::Vector3f &p2, const EGG::Vector3f &p3, s32 count, RailSplineTransition &transition)
f32 estimateLength (const RailSplineTransition &transition, s32 count)
EGG::Vector3f calcCubicBezierP1 (const EGG::Vector3f &p0, const EGG::Vector3f &p1, const EGG::Vector3f &p2) const
EGG::Vector3f calcCubicBezierP2 (const EGG::Vector3f &p0, const EGG::Vector3f &p1, const EGG::Vector3f &p2) const
EGG::Vector3f cubicBezier (f32 t, const RailSplineTransition &transition) const

Private Attributes

u16 m_transitionCount
owning_span< RailSplineTransition > m_transitions
owning_span< f32 > m_pathPercentages
s32 m_segmentCount
f32 m_pathLength
bool m_doNotAllocatePathPercentages

Static Private Attributes

static constexpr u32 ESTIMATOR_SAMPLE_COUNT = 10
static constexpr f32 ESTIMATOR_STEP = 1.0f / static_cast<f32>(ESTIMATOR_SAMPLE_COUNT)

Additional Inherited Members

Protected Attributes inherited from Kinoko::Field::Rail
u16 m_pointCount
bool m_isOscillating
owning_span< System::MapdataPointInfo::Point > m_points
f32 m_someScale

Constructor & Destructor Documentation

◆ RailSpline()

Kinoko::Field::RailSpline::RailSpline ( u16 idx,
System::MapdataPointInfo * info )
0x806ED57C

Definition at line 83 of file Rail.cc.

◆ ~RailSpline()

Kinoko::Field::RailSpline::~RailSpline ( )
overridedefault0x806ED828

Member Function Documentation

◆ calcCubicBezierControlPoints()

void Kinoko::Field::RailSpline::calcCubicBezierControlPoints ( const EGG::Vector3f & p0,
const EGG::Vector3f & p1,
const EGG::Vector3f & p2,
const EGG::Vector3f & p3,
s32 count,
RailSplineTransition & transition )
private0x806EE27C

Definition at line 209 of file Rail.cc.

◆ calcCubicBezierP1()

EGG::Vector3f Kinoko::Field::RailSpline::calcCubicBezierP1 ( const EGG::Vector3f & p0,
const EGG::Vector3f & p1,
const EGG::Vector3f & p2 ) const
nodiscardprivate0x806EE408

Definition at line 244 of file Rail.cc.

◆ calcCubicBezierP2()

EGG::Vector3f Kinoko::Field::RailSpline::calcCubicBezierP2 ( const EGG::Vector3f & p0,
const EGG::Vector3f & p1,
const EGG::Vector3f & p2 ) const
nodiscardprivate0x806EE4B8

Definition at line 253 of file Rail.cc.

◆ cubicBezier()

EGG::Vector3f Kinoko::Field::RailSpline::cubicBezier ( f32 t,
const RailSplineTransition & transition ) const
nodiscardprivate0x806EE72C

Definition at line 262 of file Rail.cc.

◆ estimateLength()

f32 Kinoko::Field::RailSpline::estimateLength ( const RailSplineTransition & transition,
s32 count )
nodiscardprivate0x806EE56C

Definition at line 221 of file Rail.cc.

◆ getEstimatorSampleCount()

consteval u32 Kinoko::Field::RailSpline::getEstimatorSampleCount ( )
inlinestaticnodiscardconsteval

Definition at line 122 of file Rail.hh.

◆ getEstimatorStep()

consteval f32 Kinoko::Field::RailSpline::getEstimatorStep ( )
inlinestaticnodiscardconsteval0x806EF98C

Definition at line 127 of file Rail.hh.

◆ getLinearTransitions()

std::span< const RailLineTransition > Kinoko::Field::RailSpline::getLinearTransitions ( ) const
inlinenodiscardoverrideprivatevirtual0x806EF9A4

Implements Kinoko::Field::Rail.

Definition at line 138 of file Rail.hh.

◆ getPathLength()

f32 Kinoko::Field::RailSpline::getPathLength ( ) const
inlinenodiscardoverrideprivatevirtual0x806EF9AC

Implements Kinoko::Field::Rail.

Definition at line 133 of file Rail.hh.

◆ getPathPercentages()

std::span< const f32 > Kinoko::Field::RailSpline::getPathPercentages ( ) const
inlinenodiscardoverridevirtual0x806EF984

Implements Kinoko::Field::Rail.

Definition at line 118 of file Rail.hh.

◆ getSplineTransitions()

std::span< const RailSplineTransition > Kinoko::Field::RailSpline::getSplineTransitions ( ) const
inlinenodiscardoverrideprivatevirtual0x806EF99C

Implements Kinoko::Field::Rail.

Definition at line 144 of file Rail.hh.

◆ invalidateTransitions()

void Kinoko::Field::RailSpline::invalidateTransitions ( bool lastOnly)
private0x806EDA04

Definition at line 133 of file Rail.cc.

◆ onPointAdded()

void Kinoko::Field::RailSpline::onPointAdded ( )
overrideprivatevirtual0x806ED960

Implements Kinoko::Field::Rail.

Definition at line 119 of file Rail.cc.

◆ onPointsChanged()

void Kinoko::Field::RailSpline::onPointsChanged ( )
overrideprivatevirtual0x806ED8BC

Implements Kinoko::Field::Rail.

Definition at line 105 of file Rail.cc.

Member Data Documentation

◆ ESTIMATOR_SAMPLE_COUNT

u32 Kinoko::Field::RailSpline::ESTIMATOR_SAMPLE_COUNT = 10
staticconstexprprivate

Definition at line 169 of file Rail.hh.

◆ ESTIMATOR_STEP

f32 Kinoko::Field::RailSpline::ESTIMATOR_STEP = 1.0f / static_cast<f32>(ESTIMATOR_SAMPLE_COUNT)
staticconstexprprivate

Definition at line 170 of file Rail.hh.

◆ m_doNotAllocatePathPercentages

bool Kinoko::Field::RailSpline::m_doNotAllocatePathPercentages
private

Definition at line 167 of file Rail.hh.

◆ m_pathLength

f32 Kinoko::Field::RailSpline::m_pathLength
private

Definition at line 166 of file Rail.hh.

◆ m_pathPercentages

owning_span<f32> Kinoko::Field::RailSpline::m_pathPercentages
private

Definition at line 164 of file Rail.hh.

◆ m_segmentCount

s32 Kinoko::Field::RailSpline::m_segmentCount
private

Definition at line 165 of file Rail.hh.

◆ m_transitionCount

u16 Kinoko::Field::RailSpline::m_transitionCount
private

Definition at line 162 of file Rail.hh.

◆ m_transitions

owning_span<RailSplineTransition> Kinoko::Field::RailSpline::m_transitions
private

Definition at line 163 of file Rail.hh.