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

Description

Definition at line 16 of file ObjectBase.hh.

Inheritance diagram for Kinoko::Field::ObjectBase:

Public Types

enum class  eFlags {
  Position = 0 ,
  Rotation = 1 ,
  Matrix = 2 ,
  Scale = 3
}
typedef EGG::TBitFlag< u16, eFlags > Flags

Public Member Functions

 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 void load ()=0
virtual const char * getResources () const
virtual void loadGraphics ()
virtual void loadAnims ()
virtual void createCollision ()=0
virtual void loadRail ()
virtual void calcCollisionTransform ()=0
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 BoxColUnitgetUnit () const
const RailInterpolatorrailInterpolator () const
virtual const EGG::Vector3fgetPosition () const
virtual f32 getCollisionRadius () 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::Vector3fpos () const
const EGG::Vector3fscale () const
const EGG::Vector3frot () const
const EGG::Matrix34ftransform () const

Protected Member Functions

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 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

Render::DrawMdlm_drawMdl
Abstract::g3d::ResFilem_resFile
ObjectId m_id
RailInterpolatorm_railInterpolator
BoxColUnitm_boxColUnit
const System::MapdataGeoObjm_mapObj

Private Attributes

Flags m_flags
EGG::Vector3f m_pos
EGG::Vector3f m_scale
EGG::Vector3f m_rot
bool m_rotLock
EGG::Matrix34f m_transform

Member Typedef Documentation

◆ Flags

typedef EGG::TBitFlag<u16, eFlags> Kinoko::Field::ObjectBase::Flags

Definition at line 24 of file ObjectBase.hh.

Member Enumeration Documentation

◆ eFlags

enum class Kinoko::Field::ObjectBase::eFlags
strong

Definition at line 18 of file ObjectBase.hh.

Constructor & Destructor Documentation

◆ ObjectBase() [1/2]

Kinoko::Field::ObjectBase::ObjectBase ( const System::MapdataGeoObj & params)
0x8081F828

Definition at line 16 of file ObjectBase.cc.

◆ ObjectBase() [2/2]

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

Definition at line 24 of file ObjectBase.cc.

◆ ~ObjectBase()

Kinoko::Field::ObjectBase::~ObjectBase ( )
virtual0x8067E3C4

Definition at line 33 of file ObjectBase.cc.

Member Function Documentation

◆ addPos()

void Kinoko::Field::ObjectBase::addPos ( const EGG::Vector3f & v)
inline

Definition at line 101 of file ObjectBase.hh.

◆ addRot()

void Kinoko::Field::ObjectBase::addRot ( const EGG::Vector3f & v)
inline

Definition at line 130 of file ObjectBase.hh.

◆ AdjustVecForward()

EGG::Vector3f Kinoko::Field::ObjectBase::AdjustVecForward ( f32 sidewaysScalar,
f32 forwardScalar,
f32 minSpeed,
const EGG::Vector3f & src,
EGG::Vector3f forward )
staticnodiscardprotected0x807DE934

Definition at line 222 of file ObjectBase.cc.

◆ calc()

virtual void Kinoko::Field::ObjectBase::calc ( )
inlinevirtual

Reimplemented in Kinoko::Field::ObjectCowHerd.

Definition at line 32 of file ObjectBase.hh.

◆ calcModel()

void Kinoko::Field::ObjectBase::calcModel ( )
virtual0x808217B8

Definition at line 40 of file ObjectBase.cc.

◆ CalcParabolicDisplacement()

f32 Kinoko::Field::ObjectBase::CalcParabolicDisplacement ( f32 initVel,
f32 accel,
u32 frame )
inlinestaticnodiscardprotected0x806B59A8

Solves the standard kinematic equation \(y(t) = v_0\, t - \frac{1}{2} a t^{2}\).

Definition at line 188 of file ObjectBase.hh.

◆ calcRotLock()

void Kinoko::Field::ObjectBase::calcRotLock ( )
protected

Definition at line 119 of file ObjectBase.cc.

◆ calcTransform()

void Kinoko::Field::ObjectBase::calcTransform ( )
protected0x80821640

Definition at line 109 of file ObjectBase.cc.

◆ CheckPointAgainstLineSegment()

f32 Kinoko::Field::ObjectBase::CheckPointAgainstLineSegment ( const EGG::Vector3f & point,
const EGG::Vector3f & a,
const EGG::Vector3f & b )
staticnodiscardprotected0x806B38A8

Calculates on what side of line segment ab point lies.

Definition at line 157 of file ObjectBase.cc.

◆ createCollision()

virtual void Kinoko::Field::ObjectBase::createCollision ( )
pure virtual

◆ disableCollision()

virtual void Kinoko::Field::ObjectBase::disableCollision ( ) const
inlinevirtual0x80821DEC

Definition at line 63 of file ObjectBase.hh.

◆ enableCollision()

virtual void Kinoko::Field::ObjectBase::enableCollision ( ) const
inlinevirtual0x80821E00

Definition at line 68 of file ObjectBase.hh.

◆ getCollisionRadius()

virtual f32 Kinoko::Field::ObjectBase::getCollisionRadius ( ) const
inlinenodiscardvirtual0x8080BDC0

◆ getKclName()

const char * Kinoko::Field::ObjectBase::getKclName ( ) const
nodiscardvirtual0x806806DC

Reimplemented in Kinoko::Field::ObjectKinokoUd.

Definition at line 101 of file ObjectBase.cc.

◆ getName()

const char * Kinoko::Field::ObjectBase::getName ( ) const
nodiscardvirtual0x80680784

Definition at line 93 of file ObjectBase.cc.

◆ getPosition()

virtual const EGG::Vector3f & Kinoko::Field::ObjectBase::getPosition ( ) const
inlinenodiscardvirtual0x80681598

Definition at line 82 of file ObjectBase.hh.

◆ getResources()

const char * Kinoko::Field::ObjectBase::getResources ( ) const
nodiscardvirtual0x80680730

Definition at line 45 of file ObjectBase.cc.

◆ getUnit()

virtual const BoxColUnit * Kinoko::Field::ObjectBase::getUnit ( ) const
inlinevirtual0x80680618

Definition at line 73 of file ObjectBase.hh.

◆ id()

virtual ObjectId Kinoko::Field::ObjectBase::id ( ) const
inlinenodiscardvirtual0x80572574

Definition at line 92 of file ObjectBase.hh.

◆ init()

virtual void Kinoko::Field::ObjectBase::init ( )
inlinevirtual

Reimplemented in Kinoko::Field::ObjectCowHerd, and Kinoko::Field::ObjectHeyhoShipManager.

Definition at line 31 of file ObjectBase.hh.

◆ Interpolate()

EGG::Vector3f Kinoko::Field::ObjectBase::Interpolate ( f32 t,
const EGG::Vector3f & v0,
const EGG::Vector3f & v1 )
inlinestaticnodiscardprotected0x8086C098

Definition at line 194 of file ObjectBase.hh.

◆ linkAnims()

void Kinoko::Field::ObjectBase::linkAnims ( const std::span< const char * > & names,
const std::span< Render::AnmType > types )
protected0x80820EB8

Definition at line 127 of file ObjectBase.cc.

◆ loadAnims()

virtual void Kinoko::Field::ObjectBase::loadAnims ( )
inlinevirtual

Reimplemented in Kinoko::Field::ObjectPenguinS.

Definition at line 37 of file ObjectBase.hh.

◆ loadFlags()

virtual u32 Kinoko::Field::ObjectBase::loadFlags ( ) const
inlinenodiscardvirtual0x806BF434

Reimplemented in Kinoko::Field::ObjectKinoko, and Kinoko::Field::ObjectKoopaFigure64.

Definition at line 45 of file ObjectBase.hh.

◆ loadGraphics()

void Kinoko::Field::ObjectBase::loadGraphics ( )
virtual0x8081FD10

Definition at line 53 of file ObjectBase.cc.

◆ loadRail()

void Kinoko::Field::ObjectBase::loadRail ( )
virtual0x80820980

Reimplemented in Kinoko::Field::ObjectBird.

Definition at line 71 of file ObjectBase.cc.

◆ OrthonormalBasis()

EGG::Matrix34f Kinoko::Field::ObjectBase::OrthonormalBasis ( const EGG::Vector3f & v)
staticnodiscardprotected0x806B3CA4

Definition at line 192 of file ObjectBase.cc.

◆ pos()

const EGG::Vector3f & Kinoko::Field::ObjectBase::pos ( ) const
inlinenodiscard

Definition at line 150 of file ObjectBase.hh.

◆ railInterpolator()

const RailInterpolator * Kinoko::Field::ObjectBase::railInterpolator ( ) const
inlinenodiscard

Definition at line 77 of file ObjectBase.hh.

◆ RailOrthonormalBasis()

EGG::Matrix34f Kinoko::Field::ObjectBase::RailOrthonormalBasis ( const RailInterpolator & railInterpolator)
staticnodiscardprotected0x806B46A4

Definition at line 215 of file ObjectBase.cc.

◆ resize()

virtual void Kinoko::Field::ObjectBase::resize ( f32 radius,
f32 maxSpeed )
inlinevirtual0x80821DB8

Definition at line 53 of file ObjectBase.hh.

◆ rot()

const EGG::Vector3f & Kinoko::Field::ObjectBase::rot ( ) const
inlinenodiscard

Definition at line 158 of file ObjectBase.hh.

◆ RotateAxisAngle()

EGG::Vector3f Kinoko::Field::ObjectBase::RotateAxisAngle ( f32 angle,
const EGG::Vector3f & axis,
const EGG::Vector3f & v1 )
staticnodiscardprotected0x806B3AC4

Definition at line 172 of file ObjectBase.cc.

◆ RotateXZByYaw()

EGG::Vector3f Kinoko::Field::ObjectBase::RotateXZByYaw ( f32 angle,
const EGG::Vector3f & v )
staticnodiscardprotected0x806B3900

Rotates a vector around the Y-axis and returns the XZ-plane portion of the vector.

Definition at line 164 of file ObjectBase.cc.

◆ scale()

const EGG::Vector3f & Kinoko::Field::ObjectBase::scale ( ) const
inlinenodiscard

Definition at line 154 of file ObjectBase.hh.

◆ setMatrixFromOrthonormalBasisAndPos()

void Kinoko::Field::ObjectBase::setMatrixFromOrthonormalBasisAndPos ( const EGG::Vector3f & v)
protected0x808218B0

Definition at line 149 of file ObjectBase.cc.

◆ setMatrixTangentTo()

void Kinoko::Field::ObjectBase::setMatrixTangentTo ( const EGG::Vector3f & up,
const EGG::Vector3f & tangent )
protected0x80821910

Definition at line 141 of file ObjectBase.cc.

◆ setPos()

void Kinoko::Field::ObjectBase::setPos ( const EGG::Vector3f & pos)
inline

Definition at line 96 of file ObjectBase.hh.

◆ setRot()

void Kinoko::Field::ObjectBase::setRot ( const EGG::Vector3f & rot)
inline

Definition at line 121 of file ObjectBase.hh.

◆ setRotNoFlag()

void Kinoko::Field::ObjectBase::setRotNoFlag ( const EGG::Vector3f & rot)
inline

Definition at line 126 of file ObjectBase.hh.

◆ SetRotTangentHorizontal()

void Kinoko::Field::ObjectBase::SetRotTangentHorizontal ( EGG::Matrix34f & mat,
const EGG::Vector3f & up,
const EGG::Vector3f & tangent )
staticprotected0x806B41E0

Definition at line 181 of file ObjectBase.cc.

◆ setScale() [1/2]

void Kinoko::Field::ObjectBase::setScale ( const EGG::Vector3f & scale)
inline

Definition at line 111 of file ObjectBase.hh.

◆ setScale() [2/2]

void Kinoko::Field::ObjectBase::setScale ( f32 scale)
inline

Definition at line 116 of file ObjectBase.hh.

◆ setTransform()

void Kinoko::Field::ObjectBase::setTransform ( const EGG::Matrix34f & mat)
inline0x806C296C

Definition at line 143 of file ObjectBase.hh.

◆ subPos()

void Kinoko::Field::ObjectBase::subPos ( const EGG::Vector3f & v)
inline

Definition at line 106 of file ObjectBase.hh.

◆ subRot()

void Kinoko::Field::ObjectBase::subRot ( const EGG::Vector3f & v)
inline

Definition at line 136 of file ObjectBase.hh.

◆ transform()

const EGG::Matrix34f & Kinoko::Field::ObjectBase::transform ( ) const
inlinenodiscard

Definition at line 162 of file ObjectBase.hh.

◆ unregisterCollision()

virtual void Kinoko::Field::ObjectBase::unregisterCollision ( )
inlinevirtual0x80821DD8

Definition at line 58 of file ObjectBase.hh.

Member Data Documentation

◆ m_boxColUnit

BoxColUnit* Kinoko::Field::ObjectBase::m_boxColUnit
protected

Definition at line 203 of file ObjectBase.hh.

◆ m_drawMdl

Render::DrawMdl* Kinoko::Field::ObjectBase::m_drawMdl
protected

Definition at line 199 of file ObjectBase.hh.

◆ m_flags

Flags Kinoko::Field::ObjectBase::m_flags
private

Definition at line 207 of file ObjectBase.hh.

◆ m_id

ObjectId Kinoko::Field::ObjectBase::m_id
protected

Definition at line 201 of file ObjectBase.hh.

◆ m_mapObj

const System::MapdataGeoObj* Kinoko::Field::ObjectBase::m_mapObj
protected

Definition at line 204 of file ObjectBase.hh.

◆ m_pos

EGG::Vector3f Kinoko::Field::ObjectBase::m_pos
private

Definition at line 208 of file ObjectBase.hh.

◆ m_railInterpolator

RailInterpolator* Kinoko::Field::ObjectBase::m_railInterpolator
protected

Definition at line 202 of file ObjectBase.hh.

◆ m_resFile

Abstract::g3d::ResFile* Kinoko::Field::ObjectBase::m_resFile
protected

Definition at line 200 of file ObjectBase.hh.

◆ m_rot

EGG::Vector3f Kinoko::Field::ObjectBase::m_rot
private

Definition at line 210 of file ObjectBase.hh.

◆ m_rotLock

bool Kinoko::Field::ObjectBase::m_rotLock
private

Definition at line 211 of file ObjectBase.hh.

◆ m_scale

EGG::Vector3f Kinoko::Field::ObjectBase::m_scale
private

Definition at line 209 of file ObjectBase.hh.

◆ m_transform

EGG::Matrix34f Kinoko::Field::ObjectBase::m_transform
private

Definition at line 212 of file ObjectBase.hh.