A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectHeyho.hh
1#pragma once
2
3#include "game/field/StateManager.hh"
4#include "game/field/obj/ObjectCollidable.hh"
5
6namespace Field {
7
10public:
12 ~ObjectHeyho() override;
13
14 void init() override;
15 void calc() override;
16 void loadAnims() override;
17 void calcCollisionTransform() override;
18
20 [[nodiscard]] u32 loadFlags() const override {
21 return 3;
22 }
23
24private:
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 Field
Shy guys on DK Summit.
Definition ObjectHeyho.hh:9
Base class that represents different "states" for an object.
Pertains to collision.
A 3D float vector.
Definition Vector.hh:88