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

#include <ObjectChoropu.hh>

Description

Represents the MMM and rPG monty moles.

Each mole has an associated "holl" [sic]. Moles which move around (MMM) also have an associated "ground" (the dirt trail).

Definition at line 30 of file ObjectChoropu.hh.

Inheritance diagram for Field::ObjectChoropu:

Public Member Functions

 ObjectChoropu (const System::MapdataGeoObj &params)
 
void init () override
 
void calc () override
 
u32 loadFlags () const override
 
Kart::Reaction onCollision (Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override
 
- Public Member Functions inherited from 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::Vector3fgetCollisionTranslation () const
 
virtual ObjectCollisionBasecollision () const
 
- Public Member Functions inherited from 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 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 disableCollision () const
 
virtual void enableCollision () const
 
virtual const EGG::Vector3fgetPosition () const
 
virtual ObjectId id () const
 
const EGG::Vector3fpos () const
 
void setPos (const EGG::Vector3f &pos)
 
void setScale (const EGG::Vector3f &scale)
 
void setTransform (const EGG::Matrix34f &mat)
 
const EGG::Vector3fscale () const
 
- Public Member Functions inherited from Field::StateManager< ObjectChoropu >
 StateManager (ObjectChoropu *obj)
 
- Public Member Functions inherited from Field::StateManagerBase< ObjectChoropu >

Private Member Functions

void enterStateStub ()
 
void enterDigging ()
 
void enterPeeking ()
 
void enterJumping ()
 
void calcStateStub ()
 
void calcDigging ()
 
void calcPeeking ()
 
void calcJumping ()
 
void calcGround ()
 
void calcGroundObjs ()
 
EGG::Matrix34f calcInterpolatedPose (f32 t) const
 

Private Attributes

friend StateManager< ObjectChoropu >
 
std::span< ObjectChoropuGround * > m_groundObjs
 
ObjectChoropuHollm_objHoll
 
s16 m_startFrameOffset
 
u16 m_idleDuration
 
f32 m_groundHeight
 
bool m_isStationary
 rPG moles don't move while MMM moles do
 
EGG::Matrix34f m_transMat
 
EGG::Matrix34f m_railMat
 
f32 m_groundLength
 

Static Private Attributes

static constexpr f32 RADIUS = 300.0f
 
static constexpr f32 MAX_GROUND_LEN = 3000.0f
 Max length of the dirt trail.
 

Additional Inherited Members

- Public Types inherited from Field::ObjectBase
enum class  eFlags {
  Position = 0 ,
  Rotation = 1 ,
  Matrix = 2 ,
  Scale = 3
}
 
typedef EGG::TBitFlag< u16, eFlags > Flags
 
- Protected Member Functions inherited from Field::ObjectCollidable
void createCollision () override
 
virtual const EGG::Vector3fcollisionCenter () const
 
void registerManagedObject ()
 
- Protected Member Functions inherited from Field::ObjectBase
void calcTransform ()
 
void linkAnims (const std::span< const char * > &names, const std::span< Render::AnmType > types)
 
void setMatrixTangentTo (const EGG::Vector3f &up, const EGG::Vector3f &tangent)
 
- Static Protected Member Functions inherited from 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 Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1)
 
- Protected Attributes inherited from Field::ObjectCollidable
ObjectCollisionBasem_collision
 
- Protected Attributes inherited from Field::ObjectBase
Render::DrawMdlm_drawMdl
 
Abstract::g3d::ResFilem_resFile
 
ObjectId m_id
 
RailInterpolatorm_railInterpolator
 
BoxColUnitm_boxColUnit
 
Flags m_flags
 
EGG::Vector3f m_pos
 
EGG::Vector3f m_rot
 
EGG::Vector3f m_scale
 
EGG::Matrix34f m_transform
 
const System::MapdataGeoObjm_mapObj
 
- Protected Attributes inherited from Field::StateManagerBase< ObjectChoropu >
u16 m_currentStateId
 
s32 m_nextStateId
 
u32 m_currentFrame
 
std::span< u16m_entryIds
 
std::span< const StateManagerEntry< ObjectChoropu > > m_entries
 
const ObjectChoropum_obj
 

Constructor & Destructor Documentation

◆ ObjectChoropu()

Field::ObjectChoropu::ObjectChoropu ( const System::MapdataGeoObj & params)
0x806B96A0

Definition at line 11 of file ObjectChoropu.cc.

◆ ~ObjectChoropu()

Field::ObjectChoropu::~ObjectChoropu ( )
override0x806B9B8C

Definition at line 51 of file ObjectChoropu.cc.

Member Function Documentation

◆ calc()

void Field::ObjectChoropu::calc ( )
overridevirtual0x806B9E60

Reimplemented from Field::ObjectBase.

Definition at line 87 of file ObjectChoropu.cc.

◆ calcDigging()

void Field::ObjectChoropu::calcDigging ( )
private0x806BA7FC

Definition at line 185 of file ObjectChoropu.cc.

◆ calcGround()

void Field::ObjectChoropu::calcGround ( )
private0x806BBA7C

Definition at line 263 of file ObjectChoropu.cc.

◆ calcGroundObjs()

void Field::ObjectChoropu::calcGroundObjs ( )
private0x806BB840

Definition at line 273 of file ObjectChoropu.cc.

◆ calcInterpolatedPose()

EGG::Matrix34f Field::ObjectChoropu::calcInterpolatedPose ( f32 t) const
nodiscardprivate0x806B46F8

Definition at line 302 of file ObjectChoropu.cc.

◆ calcJumping()

void Field::ObjectChoropu::calcJumping ( )
private0x806BB5F0

Definition at line 240 of file ObjectChoropu.cc.

◆ calcPeeking()

void Field::ObjectChoropu::calcPeeking ( )
private0x806BB144

Definition at line 220 of file ObjectChoropu.cc.

◆ calcStateStub()

void Field::ObjectChoropu::calcStateStub ( )
private

Definition at line 182 of file ObjectChoropu.cc.

◆ enterDigging()

void Field::ObjectChoropu::enterDigging ( )
private0x806BA6D8

Definition at line 131 of file ObjectChoropu.cc.

◆ enterJumping()

void Field::ObjectChoropu::enterJumping ( )
private0x806BB39C

Definition at line 174 of file ObjectChoropu.cc.

◆ enterPeeking()

void Field::ObjectChoropu::enterPeeking ( )
private0x806BABEC

Definition at line 146 of file ObjectChoropu.cc.

◆ enterStateStub()

void Field::ObjectChoropu::enterStateStub ( )
private

Definition at line 128 of file ObjectChoropu.cc.

◆ init()

void Field::ObjectChoropu::init ( )
overridevirtual0x806B9BF8

Reimplemented from Field::ObjectBase.

Definition at line 56 of file ObjectChoropu.cc.

◆ loadFlags()

u32 Field::ObjectChoropu::loadFlags ( ) const
inlinenodiscardoverridevirtual0x806BBE34

Reimplemented from Field::ObjectBase.

Definition at line 41 of file ObjectChoropu.hh.

◆ onCollision()

Kart::Reaction Field::ObjectChoropu::onCollision ( Kart::KartObject * kartObj,
Kart::Reaction reactionOnKart,
Kart::Reaction reactionOnObj,
EGG::Vector3f & hitDepth )
overridevirtual0x806BA144

Reimplemented from Field::ObjectCollidable.

Definition at line 122 of file ObjectChoropu.cc.

Member Data Documentation

◆ m_groundHeight

f32 Field::ObjectChoropu::m_groundHeight
private

Definition at line 66 of file ObjectChoropu.hh.

◆ m_groundLength

f32 Field::ObjectChoropu::m_groundLength
private

Definition at line 70 of file ObjectChoropu.hh.

◆ m_groundObjs

std::span<ObjectChoropuGround *> Field::ObjectChoropu::m_groundObjs
private

Definition at line 62 of file ObjectChoropu.hh.

◆ m_idleDuration

u16 Field::ObjectChoropu::m_idleDuration
private

Definition at line 65 of file ObjectChoropu.hh.

◆ m_isStationary

bool Field::ObjectChoropu::m_isStationary
private

rPG moles don't move while MMM moles do

Definition at line 67 of file ObjectChoropu.hh.

◆ m_objHoll

ObjectChoropuHoll* Field::ObjectChoropu::m_objHoll
private

Definition at line 63 of file ObjectChoropu.hh.

◆ m_railMat

EGG::Matrix34f Field::ObjectChoropu::m_railMat
private

Definition at line 69 of file ObjectChoropu.hh.

◆ m_startFrameOffset

s16 Field::ObjectChoropu::m_startFrameOffset
private

Definition at line 64 of file ObjectChoropu.hh.

◆ m_transMat

EGG::Matrix34f Field::ObjectChoropu::m_transMat
private

Definition at line 68 of file ObjectChoropu.hh.

◆ MAX_GROUND_LEN

f32 Field::ObjectChoropu::MAX_GROUND_LEN = 3000.0f
staticconstexprprivate

Max length of the dirt trail.

Definition at line 73 of file ObjectChoropu.hh.

◆ RADIUS

f32 Field::ObjectChoropu::RADIUS = 300.0f
staticconstexprprivate

Definition at line 72 of file ObjectChoropu.hh.

◆ StateManager< ObjectChoropu >

friend Field::ObjectChoropu::StateManager< ObjectChoropu >
private

Definition at line 31 of file ObjectChoropu.hh.