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
8class ObjectHeyho;
9
11class ObjectHeyho : public ObjectCollidable, public StateManager<ObjectHeyho> {
13
14public:
16 ~ObjectHeyho() override;
17
18 void init() override;
19 void calc() override;
20 void loadAnims() override;
21 void calcCollisionTransform() override;
22
24 [[nodiscard]] u32 loadFlags() const override {
25 return 3;
26 }
27
28private:
29 enum class Animation {
30 Move = 1,
31 Jump = 2,
32 Jumped = 3,
33 };
34
35 void changeAnimation(Animation anim) {
36 m_drawMdl->anmMgr()->playAnim(0.0f, 1.0f, static_cast<size_t>(anim));
37 m_currentAnim = anim;
38 }
39
40 // State methods
41
43 void enterMove() {}
44
46 void enterJump() {
47 m_spinFrame = 0;
48 }
49
50 void calcMove();
51 void calcJump();
52
53 void calcStateTransition();
54 void calcMotion();
55 void calcInterp();
56
57 const s32 m_color;
58 f32 m_apex;
59 EGG::Vector3f m_midpoint;
60 EGG::Vector3f m_transformOffset;
61 f32 m_currentVel;
62 f32 m_accel;
63 f32 m_maxVelSq;
64 EGG::Vector3f m_up;
65 EGG::Vector3f m_forward;
66 EGG::Vector3f m_floorNrm;
67 bool m_floorCollision;
68 Animation m_currentAnim;
69 bool m_freeFall;
70 f32 m_launchVel;
71 s16 m_spinFrame;
72
73 static constexpr std::array<StateManagerEntry<ObjectHeyho>, 2> STATE_ENTRIES = {{
74 {0, &ObjectHeyho::enterMove, &ObjectHeyho::calcMove},
75 {1, &ObjectHeyho::enterJump, &ObjectHeyho::calcJump},
76 }};
77
78 static constexpr EGG::Vector3f COLLISION_OFFSET = EGG::Vector3f(0.0f, 10.0f, 0.0f);
79 static constexpr f32 COLLISION_RADIUS = 100.0f;
80};
81
82} // namespace Field
Shy guys on DK Summit.
Pertains to collision.
A 3D float vector.
Definition Vector.hh:88