#include <ObjectObakeManager.hh>
The manager class for SNES Ghost Valley 2 blocks.
Blocks are constructed via this manager. When blocks are added, they're placed in a spatially-indexed cache, which reduces the number of collision checks the game would have to perform if blocks were managed like normal objects.
Definition at line 18 of file ObjectObakeManager.hh.
Public Member Functions | |
ObjectObakeManager (const System::MapdataGeoObj ¶ms) | |
void | calc () override |
u32 | loadFlags () const override |
void | createCollision () override |
void | calcCollisionTransform () override |
f32 | getCollisionRadius () const override |
bool | checkPointPartial (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override |
bool | checkPointPartialPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override |
bool | checkPointFull (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override |
bool | checkPointFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override |
bool | checkSpherePartial (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSpherePartialPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSphereFull (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSphereFullPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkPointCachedPartial (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override |
bool | checkPointCachedPartialPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) override |
bool | checkPointCachedFull (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override |
bool | checkPointCachedFullPush (const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) override |
bool | checkSphereCachedPartial (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSphereCachedPartialPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSphereCachedFull (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
bool | checkSphereCachedFullPush (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) override |
void | addBlock (const System::MapdataGeoObj ¶ms) |
![]() | |
ObjectDrivable (const System::MapdataGeoObj ¶ms) | |
void | load () override |
virtual void | initCollision () |
virtual void | loadAABB (f32 radius) |
virtual void | narrScLocal (f32, const EGG::Vector3f &, KCLTypeMask, u32) |
![]() | |
ObjectBase (const System::MapdataGeoObj ¶ms) | |
ObjectBase (const char *name, const EGG::Vector3f &pos, const EGG::Vector3f &rot, const EGG::Vector3f &scale) | |
virtual void | init () |
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 const EGG::Vector3f & | getPosition () const |
virtual ObjectId | id () const |
const EGG::Vector3f & | pos () const |
void | setPos (const EGG::Vector3f &pos) |
Private Member Functions | |
bool | checkSpherePartialImpl (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) |
bool | checkSpherePartialPushImpl (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfoPartial *info, KCLTypeMask *maskOut) |
bool | checkSphereFullImpl (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) |
bool | checkSphereFullPushImpl (f32 radius, const EGG::Vector3f &pos, const EGG::Vector3f &prevPos, KCLTypeMask mask, CollisionInfo *info, KCLTypeMask *maskOut) |
Static Private Member Functions | |
static std::pair< s32, s32 > | SpatialIndex (const EGG::Vector3f &pos) |
Helper function to return the spatial index of a given block. | |
Private Attributes | |
ObjectCollisionBox * | m_colBox |
Represents hitbox of a particular block. | |
ObjectCollisionSphere * | m_colSphere |
Represents a kart hitbox. | |
std::array< std::array< ObjectObakeBlock *, CACHE_SIZE_Z >, CACHE_SIZE_X > | m_blockCache |
Spatially-indexed array of blocks for faster collision lookups. | |
std::vector< ObjectObakeBlock * > | m_blocks |
All blocks. | |
std::vector< ObjectObakeBlock * > | m_calcBlocks |
Actively falling blocks. | |
Static Private Attributes | |
static constexpr size_t | CACHE_SIZE_X = 122 |
static constexpr size_t | CACHE_SIZE_Z = 116 |
static constexpr f32 | SPECIAL_WALL_BOUNDING_RADIUS = 85.0f |
static constexpr EGG::Vector3f | SPECIAL_WALL_SCALE = EGG::Vector3f(1.0f, 1.1f, 1.0f) |
static constexpr EGG::Vector3f | ROAD_SCALE = EGG::Vector3f(1.0f, 0.95f, 1.0f) |
Additional Inherited Members | |
![]() | |
enum class | eFlags { Position = 0 , Rotation = 1 , Matrix = 2 , Scale = 3 } |
typedef EGG::TBitFlag< u16, eFlags > | Flags |
![]() | |
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 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::Vector3f | Interpolate (f32 t, const EGG::Vector3f &v0, const EGG::Vector3f &v1) |
![]() | |
Render::DrawMdl * | m_drawMdl |
Abstract::g3d::ResFile * | m_resFile |
ObjectId | m_id |
RailInterpolator * | m_railInterpolator |
BoxColUnit * | m_boxColUnit |
Flags | m_flags |
EGG::Vector3f | m_pos |
EGG::Vector3f | m_rot |
EGG::Vector3f | m_scale |
EGG::Matrix34f | m_transform |
const System::MapdataGeoObj * | m_mapObj |
|
0x8080B0D8 |
Definition at line 10 of file ObjectObakeManager.cc.
|
override0x8080BEA4 |
Definition at line 26 of file ObjectObakeManager.cc.
|
0x8080B244 |
Definition at line 164 of file ObjectObakeManager.cc.
|
overridevirtual0x8080BB28 |
Reimplemented from Field::ObjectBase.
Definition at line 36 of file ObjectObakeManager.cc.
|
inlineoverridevirtual0x8080BE94 |
Implements Field::ObjectBase.
Definition at line 34 of file ObjectObakeManager.hh.
|
nodiscardoverridevirtual0x8080BE14 |
Implements Field::ObjectDrivable.
Definition at line 124 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE24 |
Implements Field::ObjectDrivable.
Definition at line 130 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BDF4 |
Implements Field::ObjectDrivable.
Definition at line 110 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE04 |
Implements Field::ObjectDrivable.
Definition at line 117 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE64 |
Implements Field::ObjectDrivable.
Definition at line 70 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE74 |
Implements Field::ObjectDrivable.
Definition at line 76 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE44 |
Implements Field::ObjectDrivable.
Definition at line 57 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE54 |
Implements Field::ObjectDrivable.
Definition at line 63 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BDEC |
Implements Field::ObjectDrivable.
Definition at line 150 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BDF0 |
Implements Field::ObjectDrivable.
Definition at line 157 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BDE4 |
Implements Field::ObjectDrivable.
Definition at line 136 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BDE8 |
Implements Field::ObjectDrivable.
Definition at line 143 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE3C |
Implements Field::ObjectDrivable.
Definition at line 96 of file ObjectObakeManager.cc.
|
nodiscardprivate0x8080C980 |
Definition at line 346 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE40 |
Implements Field::ObjectDrivable.
Definition at line 103 of file ObjectObakeManager.cc.
|
nodiscardprivate0x8080D12C |
Definition at line 431 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE34 |
Implements Field::ObjectDrivable.
Definition at line 82 of file ObjectObakeManager.cc.
|
nodiscardprivate0x8080BEE4 |
Definition at line 172 of file ObjectObakeManager.cc.
|
nodiscardoverridevirtual0x8080BE38 |
Implements Field::ObjectDrivable.
Definition at line 89 of file ObjectObakeManager.cc.
|
nodiscardprivate0x8080C41C |
Definition at line 256 of file ObjectObakeManager.cc.
|
inlineoverridevirtual0x8080BE98 |
Implements Field::ObjectBase.
Definition at line 31 of file ObjectObakeManager.hh.
|
inlinenodiscardoverridevirtual0x8080BE84 |
Reimplemented from Field::ObjectDrivable.
Definition at line 37 of file ObjectObakeManager.hh.
|
inlinenodiscardoverridevirtual0x8080BE9C |
Reimplemented from Field::ObjectBase.
Definition at line 26 of file ObjectObakeManager.hh.
|
staticnodiscardprivate |
Helper function to return the spatial index of a given block.
Definition at line 521 of file ObjectObakeManager.cc.
|
staticconstexprprivate |
Definition at line 91 of file ObjectObakeManager.hh.
|
staticconstexprprivate |
Definition at line 92 of file ObjectObakeManager.hh.
|
private |
Spatially-indexed array of blocks for faster collision lookups.
Definition at line 116 of file ObjectObakeManager.hh.
|
private |
All blocks.
Definition at line 118 of file ObjectObakeManager.hh.
|
private |
Actively falling blocks.
Definition at line 119 of file ObjectObakeManager.hh.
|
private |
Represents hitbox of a particular block.
Definition at line 112 of file ObjectObakeManager.hh.
|
private |
Represents a kart hitbox.
Definition at line 113 of file ObjectObakeManager.hh.
|
staticconstexprprivate |
Definition at line 95 of file ObjectObakeManager.hh.
|
staticconstexprprivate |
Definition at line 93 of file ObjectObakeManager.hh.
|
staticconstexprprivate |
Definition at line 94 of file ObjectObakeManager.hh.