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

#include <CollisionGroup.hh>

Description

Houses hitbox and collision info for an object (body or wheel).

Definition at line 122 of file CollisionGroup.hh.

Public Member Functions

f32 initHitboxes (const std::array< BSP::Hitbox, 16 > &hitboxes)
 Initializes the hitbox array based on the KartParam's BSP hitboxes.
 
f32 computeCollisionLimits ()
 Sets the bounding radius.
 
void createSingleHitbox (f32 radius, const EGG::Vector3f &relPos)
 Creates a hitbox to represent a tire.
 

Setters

void reset ()
 
void resetCollision ()
 
void setHitboxScale (f32 scale)
 

Getters

f32 boundingRadius () const
 
Hitboxhitbox (u16 hitboxIdx)
 
u16 hitboxCount () const
 
CollisionDatacollisionData ()
 
const CollisionDatacollisionData () const
 

Private Attributes

f32 m_boundingRadius
 
CollisionData m_collisionData
 
owning_span< Hitboxm_hitboxes
 
f32 m_hitboxScale
 

Constructor & Destructor Documentation

◆ CollisionGroup()

Kinoko::Kart::CollisionGroup::CollisionGroup ( )
0x805B82BC

Definition at line 90 of file CollisionGroup.cc.

Member Function Documentation

◆ boundingRadius()

f32 Kinoko::Kart::CollisionGroup::boundingRadius ( ) const
inlinenodiscard

Definition at line 138 of file CollisionGroup.hh.

◆ collisionData() [1/2]

CollisionData & Kinoko::Kart::CollisionGroup::collisionData ( )
inlinenodiscard

Definition at line 150 of file CollisionGroup.hh.

◆ collisionData() [2/2]

const CollisionData & Kinoko::Kart::CollisionGroup::collisionData ( ) const
inlinenodiscard

Definition at line 154 of file CollisionGroup.hh.

◆ computeCollisionLimits()

f32 Kinoko::Kart::CollisionGroup::computeCollisionLimits ( )
nodiscard0x805B883C

Sets the bounding radius.

Returns
The furthest point of all the hitboxes' spheres

Definition at line 127 of file CollisionGroup.cc.

◆ createSingleHitbox()

void Kinoko::Kart::CollisionGroup::createSingleHitbox ( f32 radius,
const EGG::Vector3f & relPos )
0x805B875C

Creates a hitbox to represent a tire.

Parameters
radiusThe radius of the tire

Definition at line 159 of file CollisionGroup.cc.

◆ hitbox()

Hitbox & Kinoko::Kart::CollisionGroup::hitbox ( u16 hitboxIdx)
inlinenodiscard

Definition at line 142 of file CollisionGroup.hh.

◆ hitboxCount()

u16 Kinoko::Kart::CollisionGroup::hitboxCount ( ) const
inlinenodiscard

Definition at line 146 of file CollisionGroup.hh.

◆ initHitboxes()

f32 Kinoko::Kart::CollisionGroup::initHitboxes ( const std::array< BSP::Hitbox, 16 > & hitboxes)
nodiscard0x805B84C0

Initializes the hitbox array based on the KartParam's BSP hitboxes.

The BSP always contains 16 hitboxes, but only some of them are valid/enabled. The game iterates the BSP::Hitbox array to see how many are enabled, allocates a Hitbox array of that size, and then sets all the enabled BSP hitboxes.

Parameters
hitboxesThe hitboxes from KartParam.bin
Returns
The furthest point out of the hitboxes' spheres

Definition at line 103 of file CollisionGroup.cc.

◆ reset()

void Kinoko::Kart::CollisionGroup::reset ( )
0x805B8330

Definition at line 176 of file CollisionGroup.cc.

◆ resetCollision()

void Kinoko::Kart::CollisionGroup::resetCollision ( )

Definition at line 185 of file CollisionGroup.cc.

◆ setHitboxScale()

void Kinoko::Kart::CollisionGroup::setHitboxScale ( f32 scale)
0x805B83D8

Definition at line 190 of file CollisionGroup.cc.

Member Data Documentation

◆ m_boundingRadius

f32 Kinoko::Kart::CollisionGroup::m_boundingRadius
private

Definition at line 160 of file CollisionGroup.hh.

◆ m_collisionData

CollisionData Kinoko::Kart::CollisionGroup::m_collisionData
private

Definition at line 161 of file CollisionGroup.hh.

◆ m_hitboxes

owning_span<Hitbox> Kinoko::Kart::CollisionGroup::m_hitboxes
private

Definition at line 162 of file CollisionGroup.hh.

◆ m_hitboxScale

f32 Kinoko::Kart::CollisionGroup::m_hitboxScale
private

Definition at line 163 of file CollisionGroup.hh.