Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectPenguin.hh
1
#pragma once
2
3
#include "game/field/obj/ObjectCollidable.hh"
4
5
namespace
Kinoko::Field
{
6
12
class
ObjectPenguin :
public
ObjectCollidable {
13
public
:
14
ObjectPenguin(
const
System::MapdataGeoObj
¶ms);
15
~ObjectPenguin()
override
;
16
17
void
init()
override
;
18
20
void
calc()
override
{
21
if
(m_state == State::Walk) {
22
calcWalk();
23
}
24
}
25
27
[[nodiscard]] u32 loadFlags()
const override
{
28
return
1;
29
}
30
32
virtual
void
calcWalk() {
33
m_railInterpolator->calc();
34
calcPos();
35
calcRot();
36
}
37
38
void
calcRot();
39
41
virtual
void
calcPos() {
42
setPos(m_railInterpolator->curPos());
43
}
44
45
virtual
void
enterWalk();
46
47
protected
:
48
enum class
State {
49
Walk = 0,
50
Dive = 1,
51
Slider = 2,
52
SliderSlow = 3,
53
StandUp = 4,
54
};
55
56
State m_state;
57
EGG::Vector3f
m_basis;
58
};
59
61
class
ObjectPenguinS final :
public
ObjectPenguin {
62
public
:
63
ObjectPenguinS(
const
System::MapdataGeoObj
¶ms);
64
~ObjectPenguinS()
override
;
65
66
void
init()
override
;
67
void
calc()
override
;
68
69
void
loadAnims
()
override
;
70
72
void
calcWalk()
override
{
73
calcRail();
74
calcPos();
75
calcRot();
76
}
77
79
void
enterWalk()
override
{
80
m_state = State::Walk;
81
}
82
83
private
:
85
void
calcDive() {
86
calcWalk();
87
}
88
89
void
calcSlider();
90
void
calcStandUp();
91
void
calcRail();
92
93
s32 m_anmTimer;
94
};
95
96
}
// namespace Kinoko::Field
Kinoko::Field::ObjectPenguinS::loadAnims
void loadAnims() override
TODO: Maybe not needed.
Definition
ObjectPenguin.cc:71
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
ObjectPenguin.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0