A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectBird.hh
1#pragma once
2
3#include "game/field/obj/ObjectCollidable.hh"
4
5#include "game/system/RaceManager.hh"
6
7namespace Field {
8
9class ObjectBirdLeader;
10class ObjectBirdFollower;
11
15class ObjectBird final : public ObjectCollidable {
16public:
17 ObjectBird(const System::MapdataGeoObj &params);
18 ~ObjectBird() override;
19
20 void calc() override;
21
23 [[nodiscard]] u32 loadFlags() const override {
24 return 1;
25 }
26
28 void loadGraphics() override {}
29
31 void createCollision() override {}
32
34 void loadRail() override {}
35
36 [[nodiscard]] const ObjectBirdLeader *leader() const {
37 return m_leader;
38 }
39
40 [[nodiscard]] const auto &followers() const {
41 return m_followers;
42 }
43
44protected:
45 ObjectBirdLeader *m_leader;
46 std::span<ObjectBirdFollower *> m_followers;
47};
48
51public:
53 ~ObjectBirdLeader() override;
54
55 void init() override;
56 void calc() override;
57
59 [[nodiscard]] u32 loadFlags() const override {
60 return 1;
61 }
62
63 void loadAnims() override;
64
66 void createCollision() override {}
67
68protected:
69 ObjectBird *m_bird;
70};
71
78public:
79 ObjectBirdFollower(const System::MapdataGeoObj &params, ObjectBird *bird, u32 idx);
80 ~ObjectBirdFollower() override;
81
82 void init() override;
83 void calc() override;
84
85private:
86 void calcPos();
87
88 const u32 m_idx;
89 EGG::Vector3f m_velocity;
90 f32 m_baseSpeed;
91};
92
93} // namespace Field
Represents all but one of the birds in an @ObjectBird group.
Definition ObjectBird.hh:77
The main bird within an ObjectBird. Other birds follow this leader.
Definition ObjectBird.hh:50
void createCollision() override
Not overridden in the base game, but collision mode 0 will cause our assert to fail.
Definition ObjectBird.hh:66
Represents a group of birds.
Definition ObjectBird.hh:15
void loadRail() override
@ADDR{0X8077CCE0}
Definition ObjectBird.hh:34
Pertains to collision.
A 3D float vector.
Definition Vector.hh:87