Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectTruckWagon.hh
1
#pragma once
2
3
#include "game/field/obj/ObjectCollidable.hh"
4
5
#include "game/field/StateManager.hh"
6
7
namespace
Kinoko::Field
{
8
10
class
ObjectTruckWagonCart final :
public
ObjectCollidable,
public
StateManager {
11
public
:
12
ObjectTruckWagonCart(
const
System::MapdataGeoObj
¶ms);
13
~ObjectTruckWagonCart()
override
;
14
16
void
init()
override
{}
17
18
void
calc()
override
;
19
21
[[nodiscard]]
const
char
*getName()
const override
{
22
return
"TruckWagon"
;
23
}
24
26
[[nodiscard]] u32 loadFlags()
const override
{
27
return
1;
28
}
29
31
[[nodiscard]]
const
char
*getKclName()
const override
{
32
return
"TruckWagon"
;
33
}
34
35
void
calcCollisionTransform()
override
;
36
Kart::Reaction onCollision(
Kart::KartObject
*kartObj, Kart::Reaction reactionOnKart,
37
Kart::Reaction reactionOnObj,
EGG::Vector3f
&hitDepth)
override
;
38
40
void
setActive(
bool
isSet) {
41
m_active
= isSet;
42
}
43
45
void
activate() {
46
reset(0);
47
setActive(
true
);
48
loadAABB(0.0f);
49
}
50
52
void
deactivate() {
53
reset(0);
54
setActive(
false
);
55
unregisterCollision();
56
m_nextStateId = 0;
57
}
58
59
void
reset(u32 idx);
60
61
[[nodiscard]]
bool
isActive()
const
{
62
return
m_active
;
63
}
64
65
private
:
67
void
enterState0() {}
68
70
void
enterState1() {}
71
73
void
enterState2() {}
74
76
void
enterState3() {}
77
78
void
calcState0();
79
void
calcState1();
80
82
void
calcState2() {
83
calcState0();
84
}
85
87
void
calcState3() {}
88
89
bool
m_active
;
90
EGG::Vector3f
m_vel;
91
f32 m_speed;
92
EGG::Vector3f
m_lastVel;
93
EGG::Vector3f
m_up;
94
EGG::Vector3f
m_tangent;
95
f32 m_pitch;
96
f32 m_angVel;
97
98
static
constexpr
std::array<StateManagerEntry, 4> STATE_ENTRIES = {{
99
{StateEntry<ObjectTruckWagonCart, &ObjectTruckWagonCart::enterState0,
100
&ObjectTruckWagonCart::calcState0>(0)},
101
{StateEntry<ObjectTruckWagonCart, &ObjectTruckWagonCart::enterState1,
102
&ObjectTruckWagonCart::calcState1>(1)},
103
{StateEntry<ObjectTruckWagonCart, &ObjectTruckWagonCart::enterState2,
104
&ObjectTruckWagonCart::calcState2>(2)},
105
{StateEntry<ObjectTruckWagonCart, &ObjectTruckWagonCart::enterState3,
106
&ObjectTruckWagonCart::calcState3>(3)},
107
}};
108
};
109
114
class
ObjectTruckWagon final :
public
ObjectCollidable {
115
public
:
116
ObjectTruckWagon(
const
System::MapdataGeoObj
¶ms);
117
~ObjectTruckWagon()
override
;
118
119
void
init()
override
;
120
void
calc()
override
;
121
123
[[nodiscard]] u32 loadFlags()
const override
{
124
return
3;
125
}
126
128
void
loadGraphics()
override
{}
129
131
void
createCollision()
override
{}
132
134
void
loadRail()
override
{}
135
136
private
:
137
owning_span<ObjectTruckWagonCart *>
m_carts;
138
const
s32
m_spawn2Frame
;
139
const
s32
m_cycleDuration
;
140
s32
m_cycleFrame
;
141
s32
m_curCartIdx
;
142
};
143
144
}
// namespace Kinoko::Field
Kinoko::Field::ObjectTruckWagonCart::m_active
bool m_active
Whether or not the minecart is spawned and has collision.
Definition
ObjectTruckWagon.hh:89
Kinoko::Field::ObjectTruckWagon::m_curCartIdx
s32 m_curCartIdx
Index into m_carts representing the next cart to spawn.
Definition
ObjectTruckWagon.hh:141
Kinoko::Field::ObjectTruckWagon::m_cycleFrame
s32 m_cycleFrame
Current frame modulo cycle duration.
Definition
ObjectTruckWagon.hh:140
Kinoko::Field::ObjectTruckWagon::m_cycleDuration
const s32 m_cycleDuration
Total duration of a cycle.
Definition
ObjectTruckWagon.hh:139
Kinoko::Field::ObjectTruckWagon::m_spawn2Frame
const s32 m_spawn2Frame
Frame that the second minecart in a cycle spawns.
Definition
ObjectTruckWagon.hh:138
Kinoko::Kart::KartObject
The highest level abstraction for a kart.
Definition
KartObject.hh:11
Kinoko::System::MapdataGeoObj
Definition
MapdataGeoObj.hh:9
Kinoko::owning_span
A contiguous storage container that manages the lifecycle of a buffer of a given size.
Definition
Types.hh:31
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
Kinoko::EGG::Vector3f
A 3D float vector.
Definition
Vector.hh:107
game
field
obj
ObjectTruckWagon.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0