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

#include <ObjectBelt.hh>

Description

The base class for a conveyor belt which induces road velocity.

Definition at line 8 of file ObjectBelt.hh.

Inheritance diagram for Kinoko::Field::ObjectBelt:

Public Member Functions

 ObjectBelt (const System::MapdataGeoObj &params)
u32 loadFlags () const override
void createCollision () override
void calcCollisionTransform () override
f32 getCollisionRadius () const override
bool checkPointPartial (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *) override
bool checkPointPartialPush (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *) override
bool checkPointFull (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfo *, KCLTypeMask *) override
bool checkPointFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkSpherePartial (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *, u32) override
bool checkSpherePartialPush (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *, u32) override
bool checkSphereFull (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfo *, KCLTypeMask *, u32) override
bool checkSphereFullPush (f32, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkPointCachedPartial (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *) override
bool checkPointCachedPartialPush (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *) override
bool checkPointCachedFull (const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfo *, KCLTypeMask *) override
bool checkPointCachedFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkSphereCachedPartial (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *, u32) override
bool checkSphereCachedPartialPush (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfoPartial *, KCLTypeMask *, u32) override
bool checkSphereCachedFull (f32, const EGG::Vector3f &, const EGG::Vector3f &, KCLTypeMask, CollisionInfo *, KCLTypeMask *, u32) override
bool checkSphereCachedFullPush (f32, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
virtual EGG::Vector3f calcRoadVelocity (u32 variant, const EGG::Vector3f &pos, u32 timeOffset) const =0
virtual bool isMoving (u32 variant, const EGG::Vector3f &pos) const =0
Public Member Functions inherited from Kinoko::Field::ObjectDrivable
 ObjectDrivable (const System::MapdataGeoObj &params)
void load () override
f32 getCollisionRadius () const override
virtual void initCollision ()
virtual void loadAABB (f32 radius)
virtual void narrScLocal (f32, const EGG::Vector3f &, KCLTypeMask, u32)
Public Member Functions inherited from Kinoko::Field::ObjectBase
 ObjectBase (const System::MapdataGeoObj &params)
 ObjectBase (const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot, const EGG::Vector3f &scale)
virtual void init ()
virtual void calc ()
virtual void calcModel ()
virtual const char * getResources () const
virtual void loadGraphics ()
virtual void loadAnims ()
virtual void loadRail ()
virtual const char * getName () const
virtual const char * getKclName () const
virtual void resize (f32 radius, f32 maxSpeed)
virtual void unregisterCollision ()
virtual void disableCollision () const
virtual void enableCollision () const
virtual const BoxColUnit * getUnit () const
const RailInterpolator * railInterpolator () const
virtual const EGG::Vector3f & getPosition () const
virtual ObjectId id () const
void setPos (const EGG::Vector3f &pos)
void addPos (const EGG::Vector3f &v)
void subPos (const EGG::Vector3f &v)
void setScale (const EGG::Vector3f &scale)
void setScale (f32 scale)
void setRot (const EGG::Vector3f &rot)
void setRotNoFlag (const EGG::Vector3f &rot)
void addRot (const EGG::Vector3f &v)
void subRot (const EGG::Vector3f &v)
void setTransform (const EGG::Matrix34f &mat)
const EGG::Vector3f & pos () const
const EGG::Vector3f & scale () const
const EGG::Vector3f & rot () const
const EGG::Matrix34f & transform () const

Protected Attributes

f32 m_roadVel
Protected Attributes inherited from Kinoko::Field::ObjectBase
Render::DrawMdl * m_drawMdl
Abstract::g3d::ResFile * m_resFile
ObjectId m_id
RailInterpolator * m_railInterpolator
BoxColUnit * m_boxColUnit
const System::MapdataGeoObj * m_mapObj

Private Member Functions

virtual bool calcCollision (const EGG::Vector3f &v0, const EGG::Vector3f &v1, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset)

Additional Inherited Members

Public Types inherited from Kinoko::Field::ObjectBase
enum class  eFlags {
  Position = 0 ,
  Rotation = 1 ,
  Matrix = 2 ,
  Scale = 3
}
typedef EGG::TBitFlag< u16, eFlags > Flags
Protected Member Functions inherited from Kinoko::Field::ObjectBase
void calcTransform ()
void calcRotLock ()
void linkAnims (const std::span< const char * > &names, const std::span< Render::AnmType > types)
void setMatrixTangentTo (const EGG::Vector3f &up, const EGG::Vector3f &tangent)
void setMatrixFromOrthonormalBasisAndPos (const EGG::Vector3f &v)
Static Protected Member Functions inherited from Kinoko::Field::ObjectBase
static f32 CheckPointAgainstLineSegment (const EGG::Vector3f &point, const EGG::Vector3f &a, const EGG::Vector3f &b)
 Calculates on what side of line segment ab point lies.
static EGG::Vector3f RotateXZByYaw (f32 angle, const EGG::Vector3f &v)
 Rotates a vector around the Y-axis and returns the XZ-plane portion of the vector.
static EGG::Vector3f RotateAxisAngle (f32 angle, const EGG::Vector3f &axis, const EGG::Vector3f &v1)
static void SetRotTangentHorizontal (EGG::Matrix34f &mat, const EGG::Vector3f &up, const EGG::Vector3f &tangent)
static EGG::Matrix34f OrthonormalBasis (const EGG::Vector3f &v)
static EGG::Matrix34f RailOrthonormalBasis (const RailInterpolator &railInterpolator)
static EGG::Vector3f AdjustVecForward (f32 sidewaysScalar, f32 forwardScalar, f32 minSpeed, const EGG::Vector3f &src, EGG::Vector3f forward)
static f32 CalcParabolicDisplacement (f32 initVel, f32 accel, u32 frame)
 Solves the standard kinematic equation \(y(t) = v_0\, t - \frac{1}{2} a t^{2}\).
static EGG::Vector3f Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1)

Constructor & Destructor Documentation

◆ ObjectBelt()

Kinoko::Field::ObjectBelt::ObjectBelt ( const System::MapdataGeoObj & params)
0x807FC248

Definition at line 10 of file ObjectBelt.cc.

◆ ~ObjectBelt()

Kinoko::Field::ObjectBelt::~ObjectBelt ( )
overridedefault0x807FC5EC

Member Function Documentation

◆ calcCollision()

bool Kinoko::Field::ObjectBelt::calcCollision ( const EGG::Vector3f & v0,
const EGG::Vector3f & v1,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardprivatevirtual0x807FC294

Definition at line 17 of file ObjectBelt.cc.

◆ calcCollisionTransform()

void Kinoko::Field::ObjectBelt::calcCollisionTransform ( )
inlineoverridevirtual0x807FD794

Implements Kinoko::Field::ObjectBase.

Definition at line 22 of file ObjectBelt.hh.

◆ checkPointCachedFull()

bool Kinoko::Field::ObjectBelt::checkPointCachedFull ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfo * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD704

Implements Kinoko::Field::ObjectDrivable.

Definition at line 101 of file ObjectBelt.hh.

◆ checkPointCachedFullPush()

bool Kinoko::Field::ObjectBelt::checkPointCachedFullPush ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut )
inlinenodiscardoverridevirtual0x807FD70C

Implements Kinoko::Field::ObjectDrivable.

Definition at line 108 of file ObjectBelt.hh.

◆ checkPointCachedPartial()

bool Kinoko::Field::ObjectBelt::checkPointCachedPartial ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD6F4

Implements Kinoko::Field::ObjectDrivable.

Definition at line 87 of file ObjectBelt.hh.

◆ checkPointCachedPartialPush()

bool Kinoko::Field::ObjectBelt::checkPointCachedPartialPush ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD6FC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 94 of file ObjectBelt.hh.

◆ checkPointFull()

bool Kinoko::Field::ObjectBelt::checkPointFull ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfo * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD760

Implements Kinoko::Field::ObjectDrivable.

Definition at line 44 of file ObjectBelt.hh.

◆ checkPointFullPush()

bool Kinoko::Field::ObjectBelt::checkPointFullPush ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut )
inlinenodiscardoverridevirtual0x807FD768

Implements Kinoko::Field::ObjectDrivable.

Definition at line 51 of file ObjectBelt.hh.

◆ checkPointPartial()

bool Kinoko::Field::ObjectBelt::checkPointPartial ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD750

Implements Kinoko::Field::ObjectDrivable.

Definition at line 30 of file ObjectBelt.hh.

◆ checkPointPartialPush()

bool Kinoko::Field::ObjectBelt::checkPointPartialPush ( const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask *  )
inlinenodiscardoverridevirtual0x807FD758

Implements Kinoko::Field::ObjectDrivable.

Definition at line 37 of file ObjectBelt.hh.

◆ checkSphereCachedFull()

bool Kinoko::Field::ObjectBelt::checkSphereCachedFull ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfo * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD6DC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 131 of file ObjectBelt.hh.

◆ checkSphereCachedFullPush()

bool Kinoko::Field::ObjectBelt::checkSphereCachedFullPush ( f32 ,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
inlinenodiscardoverridevirtual0x807FD6E4

Implements Kinoko::Field::ObjectDrivable.

Definition at line 138 of file ObjectBelt.hh.

◆ checkSphereCachedPartial()

bool Kinoko::Field::ObjectBelt::checkSphereCachedPartial ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD6CC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 115 of file ObjectBelt.hh.

◆ checkSphereCachedPartialPush()

bool Kinoko::Field::ObjectBelt::checkSphereCachedPartialPush ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD6D4

Implements Kinoko::Field::ObjectDrivable.

Definition at line 123 of file ObjectBelt.hh.

◆ checkSphereFull()

bool Kinoko::Field::ObjectBelt::checkSphereFull ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfo * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD738

Implements Kinoko::Field::ObjectDrivable.

Definition at line 73 of file ObjectBelt.hh.

◆ checkSphereFullPush()

bool Kinoko::Field::ObjectBelt::checkSphereFullPush ( f32 ,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
inlinenodiscardoverridevirtual0x807FD740

Implements Kinoko::Field::ObjectDrivable.

Definition at line 80 of file ObjectBelt.hh.

◆ checkSpherePartial()

bool Kinoko::Field::ObjectBelt::checkSpherePartial ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD728

Implements Kinoko::Field::ObjectDrivable.

Definition at line 57 of file ObjectBelt.hh.

◆ checkSpherePartialPush()

bool Kinoko::Field::ObjectBelt::checkSpherePartialPush ( f32 ,
const EGG::Vector3f & ,
const EGG::Vector3f & ,
KCLTypeMask ,
CollisionInfoPartial * ,
KCLTypeMask * ,
u32  )
inlinenodiscardoverridevirtual0x807FD730

Implements Kinoko::Field::ObjectDrivable.

Definition at line 65 of file ObjectBelt.hh.

◆ createCollision()

void Kinoko::Field::ObjectBelt::createCollision ( )
inlineoverridevirtual0x807FD798

Implements Kinoko::Field::ObjectBase.

Definition at line 19 of file ObjectBelt.hh.

◆ getCollisionRadius()

f32 Kinoko::Field::ObjectBelt::getCollisionRadius ( ) const
inlinenodiscardoverridevirtual0x807FD784

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 25 of file ObjectBelt.hh.

◆ loadFlags()

u32 Kinoko::Field::ObjectBelt::loadFlags ( ) const
inlinenodiscardoverridevirtual0x807FD79C

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 14 of file ObjectBelt.hh.

Member Data Documentation

◆ m_roadVel

f32 Kinoko::Field::ObjectBelt::m_roadVel
protected

Definition at line 150 of file ObjectBelt.hh.