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

#include <ObjectPoihana.hh>

Description

Represents the cataquacks on GCN Peach Beach.

Definition at line 48 of file ObjectPoihana.hh.

Inheritance diagram for Kinoko::Field::ObjectPoihana:

Public Member Functions

 ObjectPoihana (const System::MapdataGeoObj &params)
void init () override
void calc () override
Public Member Functions inherited from Kinoko::Field::ObjectPoihanaBase
 ObjectPoihanaBase (const System::MapdataGeoObj &params)
void init () override
void calc () override
u32 loadFlags () const 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 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 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

Private Member Functions

void enterStateStub ()
void enterState0 ()
void calcStateStub ()
void calcState0And1 ()
EGG::Vector3f curPos () const
void calcCurRot (f32 t)
void calcOrthonormalBasis ()
void calcCollision ()
void calcStep ()
void calcDir ()
void calcUp ()
EGG::Vector3f collisionPos () const
void calcPosAndCollision ()

Static Private Member Functions

static EGG::Vector3f Project (const EGG::Vector3f &v0, const EGG::Vector3f &v1)

Static Private Attributes

static constexpr std::array< StateManagerEntry, 8 > STATE_ENTRIES

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 Types inherited from Kinoko::Field::ObjectPoihanaBase
enum class  WalkState {
  NeedTarget = 0 ,
  HasTarget = 1
}
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)
Protected Member Functions inherited from Kinoko::Field::StateManager
 StateManager (void *obj, const std::span< const StateManagerEntry > &entries)
void calc ()
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 inherited from Kinoko::Field::ObjectPoihanaBase
WalkState m_walkState
EGG::Vector3f m_curRot
EGG::Vector3f m_up
EGG::Matrix34f m_workMat
EGG::Vector3f m_accel
EGG::Vector3f m_extVel
EGG::Vector3f m_vel
EGG::Vector3f m_floorNrm
f32 m_heightOffset
 Accounts for cataquack leg height.
f32 m_radius
EGG::Vector3f m_targetPos
EGG::Vector3f m_dir
EGG::Vector3f m_initPos
EGG::Vector3f m_targetVel
 Derived from m_targetPos and current position.
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
Protected Attributes inherited from Kinoko::Field::StateManager
u16 m_currentStateId
s32 m_nextStateId
u32 m_currentFrame
std::span< u16 > m_entryIds
std::span< const StateManagerEntry > m_entries
void * m_obj

Constructor & Destructor Documentation

◆ ObjectPoihana()

Kinoko::Field::ObjectPoihana::ObjectPoihana ( const System::MapdataGeoObj & params)
0x8074816C

Definition at line 29 of file ObjectPoihana.cc.

◆ ~ObjectPoihana()

Kinoko::Field::ObjectPoihana::~ObjectPoihana ( )
overridedefault0x807488BC

Member Function Documentation

◆ calc()

void Kinoko::Field::ObjectPoihana::calc ( )
inlineoverridevirtual0x80748B70

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 56 of file ObjectPoihana.hh.

◆ calcCollision()

void Kinoko::Field::ObjectPoihana::calcCollision ( )
private0x80747788

Definition at line 76 of file ObjectPoihana.cc.

◆ calcCurRot()

void Kinoko::Field::ObjectPoihana::calcCurRot ( f32 t)
private0x80747530

Definition at line 49 of file ObjectPoihana.cc.

◆ calcDir()

void Kinoko::Field::ObjectPoihana::calcDir ( )
private0x80749610

Definition at line 156 of file ObjectPoihana.cc.

◆ calcOrthonormalBasis()

void Kinoko::Field::ObjectPoihana::calcOrthonormalBasis ( )
private0x807475DC

Definition at line 59 of file ObjectPoihana.cc.

◆ calcPosAndCollision()

void Kinoko::Field::ObjectPoihana::calcPosAndCollision ( )
inlineprivate0x807476D8

Definition at line 96 of file ObjectPoihana.hh.

◆ calcState0And1()

void Kinoko::Field::ObjectPoihana::calcState0And1 ( )
inlineprivate0x80749924

Definition at line 71 of file ObjectPoihana.hh.

◆ calcStateStub()

void Kinoko::Field::ObjectPoihana::calcStateStub ( )
inlineprivate

Definition at line 68 of file ObjectPoihana.hh.

◆ calcStep()

void Kinoko::Field::ObjectPoihana::calcStep ( )
private0x80748D98

Definition at line 100 of file ObjectPoihana.cc.

◆ calcUp()

void Kinoko::Field::ObjectPoihana::calcUp ( )
private0x807496C4

Definition at line 166 of file ObjectPoihana.cc.

◆ collisionPos()

EGG::Vector3f Kinoko::Field::ObjectPoihana::collisionPos ( ) const
inlinenodiscardprivate0x80747324

Definition at line 91 of file ObjectPoihana.hh.

◆ curPos()

EGG::Vector3f Kinoko::Field::ObjectPoihana::curPos ( ) const
inlinenodiscardprivate0x80747308

Definition at line 79 of file ObjectPoihana.hh.

◆ enterState0()

void Kinoko::Field::ObjectPoihana::enterState0 ( )
inlineprivate0x807498AC

Definition at line 64 of file ObjectPoihana.hh.

◆ enterStateStub()

void Kinoko::Field::ObjectPoihana::enterStateStub ( )
inlineprivate

Definition at line 61 of file ObjectPoihana.hh.

◆ init()

void Kinoko::Field::ObjectPoihana::init ( )
overridevirtual0x80748958

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 36 of file ObjectPoihana.cc.

◆ Project()

EGG::Vector3f Kinoko::Field::ObjectPoihana::Project ( const EGG::Vector3f & v0,
const EGG::Vector3f & v1 )
inlinestaticnodiscardprivate0x8074B0AC

Definition at line 103 of file ObjectPoihana.hh.

Member Data Documentation

◆ STATE_ENTRIES

std::array<StateManagerEntry, 8> Kinoko::Field::ObjectPoihana::STATE_ENTRIES
staticconstexprprivate
Initial value:
= {{
{StateEntry<ObjectPoihana, &ObjectPoihana::enterState0, &ObjectPoihana::calcState0And1>(
0)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcState0And1>(1)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(2)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(3)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(4)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(5)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(6)},
{StateEntry<ObjectPoihana, &ObjectPoihana::enterStateStub,
&ObjectPoihana::calcStateStub>(7)},
}}
Represents the cataquacks on GCN Peach Beach.

Definition at line 110 of file ObjectPoihana.hh.