Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectCarA.hh
1
#pragma once
2
3
#include "game/field/StateManager.hh"
4
#include "game/field/obj/ObjectCollidable.hh"
5
6
namespace
Kinoko::Field
{
7
8
class
ObjectCarA :
public
ObjectCollidable,
public
StateManager {
9
public
:
10
ObjectCarA(
const
System::MapdataGeoObj
¶ms);
11
~ObjectCarA()
override
;
12
13
void
init()
override
;
14
void
calc()
override
;
15
17
[[nodiscard]] u32 loadFlags()
const override
{
18
return
1;
19
}
20
21
void
createCollision()
override
;
22
void
calcCollisionTransform()
override
;
23
24
Kart::Reaction onCollision(
Kart::KartObject
*kartObj, Kart::Reaction reactionOnKart,
25
Kart::Reaction reactionOnObj,
EGG::Vector3f
&hitDepth)
override
;
26
27
private
:
28
// Trapezoidal motion profile
29
enum class
MotionState {
30
Accelerating = 0,
31
Cruising = 1,
32
Decelerating = 2,
33
};
34
35
void
calcPos();
36
37
void
enterStop();
38
void
enterAccel() {}
39
void
enterCruising();
40
41
void
calcStop();
42
void
calcAccel();
43
void
calcCruising();
44
45
const
f32 m_finalVel;
46
const
f32 m_accel;
47
const
u32 m_stopTime;
48
f32
m_cruiseTime
;
49
EGG::Vector3f
m_currTangent
;
50
EGG::Vector3f
m_currUp
;
51
f32 m_currVel;
52
MotionState m_motionState;
53
bool
m_changingDir;
54
55
static
constexpr
std::array<StateManagerEntry, 3> STATE_ENTRIES = {{
56
{StateEntry<ObjectCarA, &ObjectCarA::enterStop, &ObjectCarA::calcStop>(0)},
57
{StateEntry<ObjectCarA, &ObjectCarA::enterAccel, &ObjectCarA::calcAccel>(1)},
58
{StateEntry<ObjectCarA, &ObjectCarA::enterCruising, &ObjectCarA::calcCruising>(2)},
59
}};
60
};
61
62
}
// namespace Kinoko::Field
Kinoko::Field::ObjectCarA::m_currUp
EGG::Vector3f m_currUp
It's EGG::Vector3f::ey unless it flies up in the air.
Definition
ObjectCarA.hh:50
Kinoko::Field::ObjectCarA::m_currTangent
EGG::Vector3f m_currTangent
It's EGG::Vector3f::ey unless it flies up in the air.
Definition
ObjectCarA.hh:49
Kinoko::Field::ObjectCarA::m_cruiseTime
f32 m_cruiseTime
How long to spend at cruising speed before decelerating.
Definition
ObjectCarA.hh:48
Kinoko::Kart::KartObject
The highest level abstraction for a kart.
Definition
KartObject.hh:11
Kinoko::System::MapdataGeoObj
Definition
MapdataGeoObj.hh:9
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
Kinoko::EGG::Vector3f
A 3D float vector.
Definition
Vector.hh:107
game
field
obj
ObjectCarA.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0