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

Description

Definition at line 18 of file ObjectCollidable.hh.

Inherits Kinoko::Field::ObjectBase.

Inherited by Kinoko::Field::ObjectBasabasa, Kinoko::Field::ObjectBasabasaDummy, Kinoko::Field::ObjectBird, Kinoko::Field::ObjectBirdLeader, Kinoko::Field::ObjectBoble, Kinoko::Field::ObjectBreakable, Kinoko::Field::ObjectCarA, Kinoko::Field::ObjectCarTGE, Kinoko::Field::ObjectChoropu, Kinoko::Field::ObjectChoropuGround, Kinoko::Field::ObjectChoropuHoll, Kinoko::Field::ObjectCow, Kinoko::Field::ObjectCowHerd, Kinoko::Field::ObjectCrab, Kinoko::Field::ObjectDokan, Kinoko::Field::ObjectDossun, Kinoko::Field::ObjectDossunTsuibiHolder, Kinoko::Field::ObjectDossunc, Kinoko::Field::ObjectEscalatorGroup, Kinoko::Field::ObjectFireRing, Kinoko::Field::ObjectFireSnakeKid, Kinoko::Field::ObjectFireball, Kinoko::Field::ObjectFirebar, Kinoko::Field::ObjectFlamePole, Kinoko::Field::ObjectFlamePoleV, Kinoko::Field::ObjectHanachan, Kinoko::Field::ObjectHanachanPart, Kinoko::Field::ObjectHeyho, Kinoko::Field::ObjectHighwayManager, Kinoko::Field::ObjectItemboxLine, Kinoko::Field::ObjectItemboxPress, Kinoko::Field::ObjectKoopaBall, Kinoko::Field::ObjectKoopaFigure64, Kinoko::Field::ObjectKuribo, Kinoko::Field::ObjectOilSFC, Kinoko::Field::ObjectPakkunF, Kinoko::Field::ObjectParasolR, Kinoko::Field::ObjectPenguin, Kinoko::Field::ObjectPillarC, Kinoko::Field::ObjectPoihanaBase, Kinoko::Field::ObjectPress, Kinoko::Field::ObjectProjectile, Kinoko::Field::ObjectProjectileLauncher, Kinoko::Field::ObjectPropeller, Kinoko::Field::ObjectPsea, Kinoko::Field::ObjectPylon, Kinoko::Field::ObjectRock, Kinoko::Field::ObjectSanbo, Kinoko::Field::ObjectShip64, Kinoko::Field::ObjectSniper, Kinoko::Field::ObjectTruckWagon, Kinoko::Field::ObjectTruckWagonCart, Kinoko::Field::ObjectVolcanoBall, Kinoko::Field::ObjectVolcanoBallLauncher, Kinoko::Field::ObjectWanwan, Kinoko::Field::ObjectWanwanPile, and Kinoko::Field::ObjectWoodboxW.

Public Member Functions

 ObjectCollidable (const System::MapdataGeoObj &params)
 ObjectCollidable (const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot, const EGG::Vector3f &scale)
void load () override
void calcCollisionTransform () override
f32 getCollisionRadius () const override
 Finds the radius that fits fully in a BoxColUnit.
virtual void loadAABB (f32 maxSpeed)
virtual void loadAABB (f32 radius, f32 maxSpeed)
virtual void processKartReactions (Kart::KartObject *kartObj, Kart::Reaction &reactionOnKart, Kart::Reaction &reactionOnObj)
virtual Kart::Reaction onCollision (Kart::KartObject *, Kart::Reaction reactionOnKart, Kart::Reaction, EGG::Vector3f &)
virtual void onWallCollision (Kart::KartObject *, const EGG::Vector3f &)
virtual void onObjectCollision (Kart::KartObject *)
virtual bool checkCollision (ObjectCollisionBase *lhs, EGG::Vector3f &dist)
virtual const EGG::Vector3f & getCollisionTranslation () const
virtual ObjectCollisionBase * collision () const
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 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 Member Functions

void createCollision () override
virtual const EGG::Vector3f & collisionCenter () const
void registerManagedObject ()
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)

Protected Attributes

ObjectCollisionBase * m_collision
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
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

◆ ObjectCollidable() [1/2]

Kinoko::Field::ObjectCollidable::ObjectCollidable ( const System::MapdataGeoObj & params)
0x8081EFEC

Definition at line 13 of file ObjectCollidable.cc.

◆ ObjectCollidable() [2/2]

Kinoko::Field::ObjectCollidable::ObjectCollidable ( const char * name,
const EGG::Vector3f & pos,
const EGG::Vector3f & rot,
const EGG::Vector3f & scale )
0x8081F064

Definition at line 17 of file ObjectCollidable.cc.

◆ ~ObjectCollidable()

Kinoko::Field::ObjectCollidable::~ObjectCollidable ( )
override0x8067E384

Definition at line 22 of file ObjectCollidable.cc.

Member Function Documentation

◆ calcCollisionTransform()

void Kinoko::Field::ObjectCollidable::calcCollisionTransform ( )
overridevirtual0x8081F7C8

Implements Kinoko::Field::ObjectBase.

Definition at line 42 of file ObjectCollidable.cc.

◆ checkCollision()

bool Kinoko::Field::ObjectCollidable::checkCollision ( ObjectCollisionBase * lhs,
EGG::Vector3f & dist )
virtual0x80681748

Definition at line 97 of file ObjectCollidable.cc.

◆ collision()

virtual ObjectCollisionBase * Kinoko::Field::ObjectCollidable::collision ( ) const
inlinenodiscardvirtual0x80573518

Definition at line 51 of file ObjectCollidable.hh.

◆ collisionCenter()

virtual const EGG::Vector3f & Kinoko::Field::ObjectCollidable::collisionCenter ( ) const
inlinenodiscardprotectedvirtual0x806816B8

Definition at line 59 of file ObjectCollidable.hh.

◆ createCollision()

void Kinoko::Field::ObjectCollidable::createCollision ( )
overrideprotectedvirtual0x8081F224

Implements Kinoko::Field::ObjectBase.

Reimplemented in Kinoko::Field::ObjectEscalatorGroup.

Definition at line 102 of file ObjectCollidable.cc.

◆ getCollisionRadius()

f32 Kinoko::Field::ObjectCollidable::getCollisionRadius ( ) const
nodiscardoverridevirtual0x806815A0

Finds the radius that fits fully in a BoxColUnit.

We refer to the collision parameters as a box due to its use of axes. This does not imply that all collidable objects are boxes!

Reimplemented from Kinoko::Field::ObjectBase.

Reimplemented in Kinoko::Field::ObjectPakkunF, Kinoko::Field::ObjectPillarC, Kinoko::Field::ObjectPress, and Kinoko::Field::ObjectPropeller.

Definition at line 51 of file ObjectCollidable.cc.

◆ getCollisionTranslation()

virtual const EGG::Vector3f & Kinoko::Field::ObjectCollidable::getCollisionTranslation ( ) const
inlinevirtual0x8068173C

Definition at line 46 of file ObjectCollidable.hh.

◆ load()

void Kinoko::Field::ObjectCollidable::load ( )
overridevirtual0x8081F0A0

Implements Kinoko::Field::ObjectBase.

Definition at line 27 of file ObjectCollidable.cc.

◆ loadAABB() [1/2]

void Kinoko::Field::ObjectCollidable::loadAABB ( f32 maxSpeed)
virtual0x806816D8

Definition at line 62 of file ObjectCollidable.cc.

◆ loadAABB() [2/2]

void Kinoko::Field::ObjectCollidable::loadAABB ( f32 radius,
f32 maxSpeed )
virtual0x8081F180

Definition at line 67 of file ObjectCollidable.cc.

◆ onCollision()

virtual Kart::Reaction Kinoko::Field::ObjectCollidable::onCollision ( Kart::KartObject * ,
Kart::Reaction reactionOnKart,
Kart::Reaction ,
EGG::Vector3f &  )
inlinevirtual0x8068179C

Reimplemented in Kinoko::Field::ObjectPylon.

Definition at line 35 of file ObjectCollidable.hh.

◆ onObjectCollision()

virtual void Kinoko::Field::ObjectCollidable::onObjectCollision ( Kart::KartObject * )
inlinevirtual

Definition at line 42 of file ObjectCollidable.hh.

◆ onWallCollision()

virtual void Kinoko::Field::ObjectCollidable::onWallCollision ( Kart::KartObject * ,
const EGG::Vector3f &  )
inlinevirtual

Definition at line 41 of file ObjectCollidable.hh.

◆ processKartReactions()

void Kinoko::Field::ObjectCollidable::processKartReactions ( Kart::KartObject * kartObj,
Kart::Reaction & reactionOnKart,
Kart::Reaction & reactionOnObj )
virtual0x8081F66C

Definition at line 75 of file ObjectCollidable.cc.

◆ registerManagedObject()

void Kinoko::Field::ObjectCollidable::registerManagedObject ( )
protected0x8081F170

Definition at line 134 of file ObjectCollidable.cc.

Member Data Documentation

◆ m_collision

ObjectCollisionBase* Kinoko::Field::ObjectCollidable::m_collision
protected

Definition at line 65 of file ObjectCollidable.hh.