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

#include <ObjectBasabasa.hh>

Description

Can be thought of as the bat "spawner". It's the class that manages an array of bats.

Spawns bats in small groups, whose size is determined by m_batsPerGroup. After that many bats have been spawned, it resets the m_cycleTimer.

Definition at line 71 of file ObjectBasabasa.hh.

Inheritance diagram for Kinoko::Field::ObjectBasabasa:

Public Member Functions

 ObjectBasabasa (const System::MapdataGeoObj &params)
void init () override
void calc () override
u32 loadFlags () const override
void createCollision () override
void loadRail () 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 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

Static Public Member Functions

static f32 initialXRange ()
static f32 initialYRange ()

Private Attributes

owning_span< ObjectBasabasaDummy * > m_bats
 The array of individual bats.
const u32 m_initialTimer
 The m_cycleTimer starts and resets to this value.
const u32 m_batsPerGroup
 Number of bats that will spawn before resetting the m_cycleTimer.
const u32 m_startFrame
 Initial delay before the spawner will start calculating.
const u32 m_batSpacing
 How many frames in between bat spawns.
u32 m_cycleTimer
 Used to determine when to spawn next bat.
u32 m_batsActive
 The number of bats currently spawned.

Static Private Attributes

static f32 s_initialXRange
static f32 s_initialYRange

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

Constructor & Destructor Documentation

◆ ObjectBasabasa()

Kinoko::Field::ObjectBasabasa::ObjectBasabasa ( const System::MapdataGeoObj & params)
0x806B70D0

Definition at line 69 of file ObjectBasabasa.cc.

◆ ~ObjectBasabasa()

Kinoko::Field::ObjectBasabasa::~ObjectBasabasa ( )
overridedefault0x806B72F4

Member Function Documentation

◆ calc()

void Kinoko::Field::ObjectBasabasa::calc ( )
overridevirtual0x806B74C4

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 108 of file ObjectBasabasa.cc.

◆ createCollision()

void Kinoko::Field::ObjectBasabasa::createCollision ( )
inlineoverridevirtual0x806B761C

Implements Kinoko::Field::ObjectBase.

Definition at line 87 of file ObjectBasabasa.hh.

◆ init()

void Kinoko::Field::ObjectBasabasa::init ( )
overridevirtual0x806B7334

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 95 of file ObjectBasabasa.cc.

◆ initialXRange()

f32 Kinoko::Field::ObjectBasabasa::initialXRange ( )
inlinestaticnodiscard

Definition at line 92 of file ObjectBasabasa.hh.

◆ initialYRange()

f32 Kinoko::Field::ObjectBasabasa::initialYRange ( )
inlinestaticnodiscard

Definition at line 96 of file ObjectBasabasa.hh.

◆ loadFlags()

u32 Kinoko::Field::ObjectBasabasa::loadFlags ( ) const
inlinenodiscardoverridevirtual0x806B7628

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 82 of file ObjectBasabasa.hh.

◆ loadRail()

void Kinoko::Field::ObjectBasabasa::loadRail ( )
inlineoverridevirtual0x806B7620

Reimplemented from Kinoko::Field::ObjectBase.

Definition at line 90 of file ObjectBasabasa.hh.

Member Data Documentation

◆ m_bats

owning_span<ObjectBasabasaDummy *> Kinoko::Field::ObjectBasabasa::m_bats
private

The array of individual bats.

Definition at line 101 of file ObjectBasabasa.hh.

◆ m_batsActive

u32 Kinoko::Field::ObjectBasabasa::m_batsActive
private

The number of bats currently spawned.

Definition at line 107 of file ObjectBasabasa.hh.

◆ m_batSpacing

const u32 Kinoko::Field::ObjectBasabasa::m_batSpacing
private

How many frames in between bat spawns.

Definition at line 105 of file ObjectBasabasa.hh.

◆ m_batsPerGroup

const u32 Kinoko::Field::ObjectBasabasa::m_batsPerGroup
private

Number of bats that will spawn before resetting the m_cycleTimer.

Definition at line 103 of file ObjectBasabasa.hh.

◆ m_cycleTimer

u32 Kinoko::Field::ObjectBasabasa::m_cycleTimer
private

Used to determine when to spawn next bat.

Definition at line 106 of file ObjectBasabasa.hh.

◆ m_initialTimer

const u32 Kinoko::Field::ObjectBasabasa::m_initialTimer
private

The m_cycleTimer starts and resets to this value.

Definition at line 102 of file ObjectBasabasa.hh.

◆ m_startFrame

const u32 Kinoko::Field::ObjectBasabasa::m_startFrame
private

Initial delay before the spawner will start calculating.

Definition at line 104 of file ObjectBasabasa.hh.

◆ s_initialXRange

f32 Kinoko::Field::ObjectBasabasa::s_initialXRange
staticprivate

Definition at line 109 of file ObjectBasabasa.hh.

◆ s_initialYRange

f32 Kinoko::Field::ObjectBasabasa::s_initialYRange
staticprivate

Definition at line 110 of file ObjectBasabasa.hh.