Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectPress.hh
1
#pragma once
2
3
#include "game/field/obj/ObjectCollidable.hh"
4
5
namespace
Kinoko::Field
{
6
9
class
ObjectPress :
public
ObjectCollidable {
10
public
:
11
ObjectPress(
const
System::MapdataGeoObj
¶ms);
12
~ObjectPress()
override
;
13
14
void
init()
override
;
15
void
calc()
override
;
16
18
[[nodiscard]] u32 loadFlags()
const override
{
19
return
1;
20
}
21
22
void
loadAnims()
override
;
23
void
createCollision()
override
;
24
25
[[nodiscard]] f32
getCollisionRadius
()
const override
{
26
return
700.0f;
27
}
28
29
Kart::Reaction onCollision(
Kart::KartObject
*kartObj, Kart::Reaction reactionOnKart,
30
Kart::Reaction reactionOnObj,
EGG::Vector3f
&hitDepth)
override
;
31
32
virtual
void
calcRaised();
33
34
protected
:
35
enum class
State
{
36
Raised,
37
WindUp
,
38
Lowering
,
39
Lowered
,
40
Raising,
41
};
42
43
State m_state;
44
u32
m_windUpTimer
;
45
46
private
:
47
void
calcWindUp();
48
void
calcLowering();
49
void
checkCollisionLowering();
50
void
calcLowered();
51
void
calcRaising();
52
53
bool
m_startingRise
;
54
u32
m_raisedTimer
;
55
u32 m_anmDuration;
56
f32 m_loweringVelocity;
57
f32 m_raisedHeight;
58
f32 m_loweredHeight;
59
bool
m_startedLowered
;
60
61
static
constexpr
f32 ANM_RATE = 2.0f;
62
};
63
66
class
ObjectPressSenko final :
public
ObjectPress {
67
public
:
68
ObjectPressSenko(
const
System::MapdataGeoObj
¶ms);
69
~ObjectPressSenko()
override
;
70
72
[[nodiscard]] ObjectId id()
const override
{
73
return
ObjectId::Press;
74
}
75
77
[[nodiscard]] u32 loadFlags()
const override
{
78
return
1;
79
}
80
82
[[nodiscard]]
const
char
*getResources()
const override
{
83
return
"Press"
;
84
}
85
87
[[nodiscard]]
const
char
*getKclName()
const override
{
88
return
"Press"
;
89
}
90
91
void
calcRaised()
override
;
92
93
void
setWindup(
bool
isSet) {
94
m_startingWindup = isSet;
95
}
96
97
private
:
98
void
startWindup();
99
100
bool
m_startingWindup;
101
};
102
103
}
// namespace Kinoko::Field
Kinoko::Field::ObjectPress::m_startingRise
bool m_startingRise
Used to delay state change by 1 frame.
Definition
ObjectPress.hh:53
Kinoko::Field::ObjectPress::m_windUpTimer
u32 m_windUpTimer
Number of frames remaining in windup state.
Definition
ObjectPress.hh:44
Kinoko::Field::ObjectPress::m_startedLowered
bool m_startedLowered
Used to induce crush effect even if it hit floor this frame.
Definition
ObjectPress.hh:59
Kinoko::Field::ObjectPress::State
State
Definition
ObjectPress.hh:35
Kinoko::Field::ObjectPress::State::Lowering
@ Lowering
Stomping down.
Definition
ObjectPress.hh:38
Kinoko::Field::ObjectPress::State::WindUp
@ WindUp
Rising up a bit before stomping down.
Definition
ObjectPress.hh:37
Kinoko::Field::ObjectPress::State::Lowered
@ Lowered
Contacting the floor.
Definition
ObjectPress.hh:39
Kinoko::Field::ObjectPress::m_raisedTimer
u32 m_raisedTimer
Number of frames remaining in raised state.
Definition
ObjectPress.hh:54
Kinoko::Field::ObjectPress::getCollisionRadius
f32 getCollisionRadius() const override
Finds the radius that fits fully in a BoxColUnit.
Definition
ObjectPress.hh:25
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
ObjectPress.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0