Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectHeyho.hh
1
#pragma once
2
3
#include "game/field/StateManager.hh"
4
#include "game/field/obj/ObjectCollidable.hh"
5
6
namespace
Kinoko::Field
{
7
9
class
ObjectHeyho :
public
ObjectCollidable,
public
StateManager {
10
public
:
11
ObjectHeyho(
const
System::MapdataGeoObj
¶ms);
12
~ObjectHeyho()
override
;
13
14
void
init()
override
;
15
void
calc()
override
;
16
void
loadAnims()
override
;
17
void
calcCollisionTransform()
override
;
18
20
[[nodiscard]]
LoadFlags
loadFlags
()
const override
{
21
return
LoadFlags
(
eLoadFlags::Calc
,
eLoadFlags::Draw
);
22
}
23
24
private
:
25
enum class
Animation {
26
Move = 1,
27
Jump = 2,
28
Jumped = 3,
29
};
30
31
void
changeAnimation(Animation anim) {
32
m_drawMdl->anmMgr()->playAnim(0.0f, 1.0f,
static_cast<
size_t
>
(anim));
33
m_currentAnim = anim;
34
}
35
36
// State methods
37
39
void
enterMove() {}
40
42
void
enterJump() {
43
m_spinFrame = 0;
44
}
45
46
void
calcMove();
47
void
calcJump();
48
49
void
calcStateTransition();
50
void
calcMotion();
51
void
calcInterp();
52
53
const
s32 m_color;
54
f32 m_apex;
55
EGG::Vector3f m_midpoint;
56
EGG::Vector3f m_transformOffset;
57
f32 m_currentVel;
58
f32 m_accel;
59
f32 m_maxVelSq;
60
EGG::Vector3f m_up;
61
EGG::Vector3f m_forward;
62
EGG::Vector3f m_floorNrm;
63
bool
m_floorCollision;
64
Animation m_currentAnim;
65
bool
m_freeFall;
66
f32 m_launchVel;
67
s16 m_spinFrame;
68
69
static
constexpr
std::array<StateManagerEntry, 2> STATE_ENTRIES = {{
70
{StateEntry<ObjectHeyho, &ObjectHeyho::enterMove, &ObjectHeyho::calcMove>(0)},
71
{StateEntry<ObjectHeyho, &ObjectHeyho::enterJump, &ObjectHeyho::calcJump>(1)},
72
}};
73
74
static
constexpr
EGG::Vector3f COLLISION_OFFSET = EGG::Vector3f(0.0f, 10.0f, 0.0f);
75
static
constexpr
f32 COLLISION_RADIUS = 100.0f;
76
};
77
78
}
// namespace Kinoko::Field
Kinoko::Field::ObjectBase::LoadFlags
EGG::TBitFlag< u8, eLoadFlags > LoadFlags
A bitfield of eLoadFlags that represents the update requirements of the object.
Definition
ObjectBase.hh:36
Kinoko::Field::ObjectBase::eLoadFlags::Draw
@ Draw
The object should be re-drawn every frame.
Definition
ObjectBase.hh:31
Kinoko::Field::ObjectBase::eLoadFlags::Calc
@ Calc
The state of the object should be recalculated every frame.
Definition
ObjectBase.hh:30
Kinoko::Field::ObjectHeyho::loadFlags
LoadFlags loadFlags() const override
Returns a bitmask indicating which lifecycle hooks should be called for the object.
Definition
ObjectHeyho.hh:20
Kinoko::System::MapdataGeoObj
Definition
MapdataGeoObj.hh:9
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
game
field
obj
ObjectHeyho.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0