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

Description

Definition at line 8 of file ObjectKCL.hh.

Inheritance diagram for Kinoko::Field::ObjectKCL:

Public Member Functions

 ObjectKCL (const System::MapdataGeoObj &params)
void createCollision () override
void calcCollisionTransform () override
const EGG::Vector3f & getPosition () const override
f32 getCollisionRadius () const override
void initCollision () override
bool checkPointPartial (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override
bool checkPointPartialPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override
bool checkPointFull (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkPointFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkSpherePartial (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSpherePartialPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSphereFull (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSphereFullPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
void narrScLocal (f32 radius, const EGG::Vector3f &pos, KCLTypeMask mask, u32 timeOffset) override
bool checkPointCachedPartial (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override
bool checkPointCachedPartialPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override
bool checkPointCachedFull (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkPointCachedFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override
bool checkSphereCachedPartial (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSphereCachedPartialPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSphereCachedFull (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
bool checkSphereCachedFullPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override
virtual void update (u32 timeOffset)
virtual void calcScale (u32 timeOffset)
virtual void setMovingObjVel (const EGG::Vector3f &v)
virtual const EGG::Matrix34f & getUpdatedMatrix (u32)
virtual f32 getScaleY (u32) const
virtual f32 colRadiusAdditionalLength () const
virtual bool shouldCheckColNoPush () const
virtual bool shouldCheckColPush () const
virtual bool checkCollision (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset)
virtual bool checkCollisionCached (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset)
Public Member Functions inherited from Kinoko::Field::ObjectDrivable
 ObjectDrivable (const System::MapdataGeoObj &params)
void load () override
virtual void loadAABB (f32 radius)
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 u32 loadFlags () 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 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

ObjColMgr * m_objColMgr
EGG::Vector3f m_kclMidpoint
f32 m_bboxHalfSideLength
s32 m_lastMtxUpdateFrame
s32 m_lastScaleUpdateFrame
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

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

◆ ObjectKCL()

Kinoko::Field::ObjectKCL::ObjectKCL ( const System::MapdataGeoObj & params)
0x8081A980

Definition at line 11 of file ObjectKCL.cc.

◆ ~ObjectKCL()

Kinoko::Field::ObjectKCL::~ObjectKCL ( )
override0x8067EAFC

Definition at line 15 of file ObjectKCL.cc.

Member Function Documentation

◆ calcCollisionTransform()

void Kinoko::Field::ObjectKCL::calcCollisionTransform ( )
overridevirtual0x80681490

Implements Kinoko::Field::ObjectBase.

Definition at line 30 of file ObjectKCL.cc.

◆ calcScale()

void Kinoko::Field::ObjectKCL::calcScale ( u32 timeOffset)
virtual0x8081AF28

Definition at line 263 of file ObjectKCL.cc.

◆ checkCollision()

bool Kinoko::Field::ObjectKCL::checkCollision ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardvirtual0x8081AFB4

Definition at line 279 of file ObjectKCL.cc.

◆ checkCollisionCached()

bool Kinoko::Field::ObjectKCL::checkCollisionCached ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardvirtual0x8081B16C

Definition at line 292 of file ObjectKCL.cc.

◆ checkPointCachedFull()

bool Kinoko::Field::ObjectKCL::checkPointCachedFull ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x80680C84

Implements Kinoko::Field::ObjectDrivable.

Definition at line 170 of file ObjectKCL.cc.

◆ checkPointCachedFullPush()

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

Implements Kinoko::Field::ObjectDrivable.

Definition at line 180 of file ObjectKCL.cc.

◆ checkPointCachedPartial()

bool Kinoko::Field::ObjectKCL::checkPointCachedPartial ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x80680B14

Implements Kinoko::Field::ObjectDrivable.

Definition at line 150 of file ObjectKCL.cc.

◆ checkPointCachedPartialPush()

bool Kinoko::Field::ObjectKCL::checkPointCachedPartialPush ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x80680BCC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 160 of file ObjectKCL.cc.

◆ checkPointFull()

bool Kinoko::Field::ObjectKCL::checkPointFull ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x80681268

Implements Kinoko::Field::ObjectDrivable.

Definition at line 76 of file ObjectKCL.cc.

◆ checkPointFullPush()

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

Implements Kinoko::Field::ObjectDrivable.

Definition at line 86 of file ObjectKCL.cc.

◆ checkPointPartial()

bool Kinoko::Field::ObjectKCL::checkPointPartial ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x806810F8

Implements Kinoko::Field::ObjectDrivable.

Definition at line 56 of file ObjectKCL.cc.

◆ checkPointPartialPush()

bool Kinoko::Field::ObjectKCL::checkPointPartialPush ( const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut )
nodiscardoverridevirtual0x806811B0

Implements Kinoko::Field::ObjectDrivable.

Definition at line 66 of file ObjectKCL.cc.

◆ checkSphereCachedFull()

bool Kinoko::Field::ObjectKCL::checkSphereCachedFull ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x80680A08

Implements Kinoko::Field::ObjectDrivable.

Definition at line 218 of file ObjectKCL.cc.

◆ checkSphereCachedFullPush()

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

Implements Kinoko::Field::ObjectDrivable.

Definition at line 232 of file ObjectKCL.cc.

◆ checkSphereCachedPartial()

bool Kinoko::Field::ObjectKCL::checkSphereCachedPartial ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x806807F0

Implements Kinoko::Field::ObjectDrivable.

Definition at line 190 of file ObjectKCL.cc.

◆ checkSphereCachedPartialPush()

bool Kinoko::Field::ObjectKCL::checkSphereCachedPartialPush ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x806808FC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 204 of file ObjectKCL.cc.

◆ checkSphereFull()

bool Kinoko::Field::ObjectKCL::checkSphereFull ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfo * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x80680FEC

Implements Kinoko::Field::ObjectDrivable.

Definition at line 124 of file ObjectKCL.cc.

◆ checkSphereFullPush()

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

Implements Kinoko::Field::ObjectDrivable.

Definition at line 137 of file ObjectKCL.cc.

◆ checkSpherePartial()

bool Kinoko::Field::ObjectKCL::checkSpherePartial ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x80680DF4

Implements Kinoko::Field::ObjectDrivable.

Definition at line 96 of file ObjectKCL.cc.

◆ checkSpherePartialPush()

bool Kinoko::Field::ObjectKCL::checkSpherePartialPush ( f32 radius,
const EGG::Vector3f & pos,
const EGG::Vector3f & prevPos,
KCLTypeMask mask,
CollisionInfoPartial * info,
KCLTypeMask * maskOut,
u32 timeOffset )
nodiscardoverridevirtual0x80680EF0

Implements Kinoko::Field::ObjectDrivable.

Definition at line 110 of file ObjectKCL.cc.

◆ colRadiusAdditionalLength()

virtual f32 Kinoko::Field::ObjectKCL::colRadiusAdditionalLength ( ) const
inlinenodiscardvirtual0x8068143C

Definition at line 93 of file ObjectKCL.hh.

◆ createCollision()

void Kinoko::Field::ObjectKCL::createCollision ( )
overridevirtual0x8081AA58

Implements Kinoko::Field::ObjectBase.

Definition at line 20 of file ObjectKCL.cc.

◆ getCollisionRadius()

f32 Kinoko::Field::ObjectKCL::getCollisionRadius ( ) const
inlineoverridevirtual0x80687D70

Reimplemented from Kinoko::Field::ObjectDrivable.

Definition at line 22 of file ObjectKCL.hh.

◆ getPosition()

const EGG::Vector3f & Kinoko::Field::ObjectKCL::getPosition ( ) const
inlinenodiscardoverridevirtual0x80681448

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 17 of file ObjectKCL.hh.

◆ getScaleY()

virtual f32 Kinoko::Field::ObjectKCL::getScaleY ( u32 ) const
inlinenodiscardvirtual0x80687DB0

Definition at line 88 of file ObjectKCL.hh.

◆ getUpdatedMatrix()

virtual const EGG::Matrix34f & Kinoko::Field::ObjectKCL::getUpdatedMatrix ( u32 )
inlinenodiscardvirtual0x807FEAC0

Definition at line 82 of file ObjectKCL.hh.

◆ initCollision()

void Kinoko::Field::ObjectKCL::initCollision ( )
overridevirtual0x8081AB4C

Reimplemented from Kinoko::Field::ObjectDrivable.

Definition at line 35 of file ObjectKCL.cc.

◆ narrScLocal()

void Kinoko::Field::ObjectKCL::narrScLocal ( f32 radius,
const EGG::Vector3f & pos,
KCLTypeMask mask,
u32 timeOffset )
overridevirtual0x806807E8

Reimplemented from Kinoko::Field::ObjectDrivable.

Definition at line 144 of file ObjectKCL.cc.

◆ setMovingObjVel()

virtual void Kinoko::Field::ObjectKCL::setMovingObjVel ( const EGG::Vector3f & v)
inlinevirtual0x80681450

Definition at line 77 of file ObjectKCL.hh.

◆ shouldCheckColNoPush()

virtual bool Kinoko::Field::ObjectKCL::shouldCheckColNoPush ( ) const
inlinenodiscardvirtual0x0x806808EC

Definition at line 98 of file ObjectKCL.hh.

◆ shouldCheckColPush()

virtual bool Kinoko::Field::ObjectKCL::shouldCheckColPush ( ) const
inlinenodiscardvirtual0x806809F8

Definition at line 103 of file ObjectKCL.hh.

◆ update()

void Kinoko::Field::ObjectKCL::update ( u32 timeOffset)
virtual0x8081AD6C

Definition at line 239 of file ObjectKCL.cc.

Member Data Documentation

◆ m_bboxHalfSideLength

f32 Kinoko::Field::ObjectKCL::m_bboxHalfSideLength
protected

Definition at line 117 of file ObjectKCL.hh.

◆ m_kclMidpoint

EGG::Vector3f Kinoko::Field::ObjectKCL::m_kclMidpoint
protected

Definition at line 116 of file ObjectKCL.hh.

◆ m_lastMtxUpdateFrame

s32 Kinoko::Field::ObjectKCL::m_lastMtxUpdateFrame
protected

Definition at line 118 of file ObjectKCL.hh.

◆ m_lastScaleUpdateFrame

s32 Kinoko::Field::ObjectKCL::m_lastScaleUpdateFrame
protected

Definition at line 119 of file ObjectKCL.hh.

◆ m_objColMgr

ObjColMgr* Kinoko::Field::ObjectKCL::m_objColMgr
protected

Definition at line 115 of file ObjectKCL.hh.