Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectBelt.cc
1
#include "ObjectBelt.hh"
2
3
#include "game/field/CollisionDirector.hh"
4
5
#include "game/system/RaceManager.hh"
6
7
namespace
Kinoko::Field
{
8
10
ObjectBelt::ObjectBelt(
const
System::MapdataGeoObj ¶ms)
11
:
ObjectDrivable
(params), m_roadVel(32.0f) {}
12
14
ObjectBelt::~ObjectBelt() =
default
;
15
17
bool
ObjectBelt::calcCollision(
const
EGG::Vector3f &v0,
const
EGG::Vector3f &
/*v1*/
,
18
KCLTypeMask
/*mask*/
, CollisionInfo *info, KCLTypeMask *maskOut, u32 timeOffset) {
19
if
((*maskOut &
KCL_TYPE_BIT
(
COL_TYPE_MOVING_ROAD
)) == 0) {
20
return
false
;
21
}
22
23
auto
*colDir = CollisionDirector::Instance();
24
if
(!colDir->findClosestCollisionEntry(maskOut,
KCL_TYPE_BIT
(
COL_TYPE_MOVING_ROAD
))) {
25
return
false
;
26
}
27
28
const
auto
*entry = colDir->closestCollisionEntry();
29
if
(!isMoving(entry->variant(), v0)) {
30
return
false
;
31
}
32
33
if
(entry->dist > info->movingFloorDist) {
34
info->movingFloorDist = entry->dist;
35
info->roadVelocity = calcRoadVelocity(entry->variant(), v0,
36
System::RaceManager::Instance()->timer() - timeOffset);
37
}
38
39
return
true
;
40
}
41
42
}
// namespace Kinoko::Field
COL_TYPE_MOVING_ROAD
@ COL_TYPE_MOVING_ROAD
TF conveyers and CM escalators.
Definition
KCollisionTypes.hh:55
KCL_TYPE_BIT
#define KCL_TYPE_BIT(x)
Definition
KCollisionTypes.hh:28
Kinoko::Field::ObjectDrivable
Definition
ObjectDrivable.hh:9
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
game
field
obj
ObjectBelt.cc
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0