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

#include <ObjectCow.hh>

Description

The base class shared between ObjectCowLeader and ObjectCowFollower.

Definition at line 11 of file ObjectCow.hh.

Inheritance diagram for Kinoko::Field::ObjectCow:

Public Member Functions

 ObjectCow (const System::MapdataGeoObj &params)
Kart::Reaction onCollision (Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override
Public Member Functions inherited from Kinoko::Field::ObjectCollidable
 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 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

virtual void calcFloor ()
void setup ()
void calcPos ()
f32 setTarget (const EGG::Vector3f &v)
Protected Member Functions inherited from Kinoko::Field::ObjectCollidable
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)

Static Protected Member Functions

static EGG::Vector3f Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1)
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)

Protected Attributes

u32 m_startFrame
 The frame the cow will start moving.
EGG::Vector3f m_tangent
EGG::Vector3f m_prevTangent
EGG::Vector3f m_up
EGG::Vector3f m_velocity
f32 m_xzSpeed
 XZ plane length of m_velocity.
f32 m_tangentFactor
EGG::Vector3f m_floorNrm
EGG::Vector3f m_state1TargetPos
 Calculated in enterState1.
EGG::Vector3f m_targetDir
EGG::Vector3f m_upForce
 Used by calcPos to counteract gravity.
f32 m_interpRate
Protected Attributes inherited from Kinoko::Field::ObjectCollidable
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

Static Protected Attributes

static constexpr EGG::Vector3f GRAVITY_FORCE = EGG::Vector3f(0.0f, 2.0f, 0.0f)

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

Constructor & Destructor Documentation

◆ ObjectCow()

Kinoko::Field::ObjectCow::ObjectCow ( const System::MapdataGeoObj & params)
0x806BBEC0

Definition at line 15 of file ObjectCow.cc.

◆ ~ObjectCow()

Kinoko::Field::ObjectCow::~ObjectCow ( )
overridedefault0x806BBF24

Member Function Documentation

◆ calcFloor()

void Kinoko::Field::ObjectCow::calcFloor ( )
protectedvirtual0x806BC87C

Definition at line 48 of file ObjectCow.cc.

◆ calcPos()

void Kinoko::Field::ObjectCow::calcPos ( )
protected0x806BC6D8

Definition at line 72 of file ObjectCow.cc.

◆ Interpolate()

EGG::Vector3f Kinoko::Field::ObjectCow::Interpolate ( f32 t,
const EGG::Vector3f & v0,
const EGG::Vector3f & v1 )
inlinestaticnodiscardprotected0x806BCF4C

Definition at line 27 of file ObjectCow.hh.

◆ onCollision()

Kart::Reaction Kinoko::Field::ObjectCow::onCollision ( Kart::KartObject * kartObj,
Kart::Reaction reactionOnKart,
Kart::Reaction reactionOnObj,
EGG::Vector3f & hitDepth )
overridevirtual0x806BC2AC

Reimplemented from Kinoko::Field::ObjectCollidable.

Definition at line 23 of file ObjectCow.cc.

◆ setTarget()

f32 Kinoko::Field::ObjectCow::setTarget ( const EGG::Vector3f & v)
protected0x806BCDC4

Definition at line 89 of file ObjectCow.cc.

◆ setup()

void Kinoko::Field::ObjectCow::setup ( )
protected0x806BBF64

Definition at line 29 of file ObjectCow.cc.

Member Data Documentation

◆ GRAVITY_FORCE

EGG::Vector3f Kinoko::Field::ObjectCow::GRAVITY_FORCE = EGG::Vector3f(0.0f, 2.0f, 0.0f)
staticconstexprprotected

Definition at line 45 of file ObjectCow.hh.

◆ m_floorNrm

EGG::Vector3f Kinoko::Field::ObjectCow::m_floorNrm
protected

Definition at line 39 of file ObjectCow.hh.

◆ m_interpRate

f32 Kinoko::Field::ObjectCow::m_interpRate
protected

Definition at line 43 of file ObjectCow.hh.

◆ m_prevTangent

EGG::Vector3f Kinoko::Field::ObjectCow::m_prevTangent
protected

Definition at line 34 of file ObjectCow.hh.

◆ m_startFrame

u32 Kinoko::Field::ObjectCow::m_startFrame
protected

The frame the cow will start moving.

Definition at line 32 of file ObjectCow.hh.

◆ m_state1TargetPos

EGG::Vector3f Kinoko::Field::ObjectCow::m_state1TargetPos
protected

Calculated in enterState1.

Definition at line 40 of file ObjectCow.hh.

◆ m_tangent

EGG::Vector3f Kinoko::Field::ObjectCow::m_tangent
protected

Definition at line 33 of file ObjectCow.hh.

◆ m_tangentFactor

f32 Kinoko::Field::ObjectCow::m_tangentFactor
protected

Definition at line 38 of file ObjectCow.hh.

◆ m_targetDir

EGG::Vector3f Kinoko::Field::ObjectCow::m_targetDir
protected

Definition at line 41 of file ObjectCow.hh.

◆ m_up

EGG::Vector3f Kinoko::Field::ObjectCow::m_up
protected

Definition at line 35 of file ObjectCow.hh.

◆ m_upForce

EGG::Vector3f Kinoko::Field::ObjectCow::m_upForce
protected

Used by calcPos to counteract gravity.

Definition at line 42 of file ObjectCow.hh.

◆ m_velocity

EGG::Vector3f Kinoko::Field::ObjectCow::m_velocity
protected

Definition at line 36 of file ObjectCow.hh.

◆ m_xzSpeed

f32 Kinoko::Field::ObjectCow::m_xzSpeed
protected

XZ plane length of m_velocity.

Definition at line 37 of file ObjectCow.hh.