A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectRock.hh
1#pragma once
2
3#include "game/field/obj/ObjectCollidable.hh"
4
5namespace Field {
6
9public:
10 ObjectRock(const System::MapdataGeoObj &params);
11 ~ObjectRock() override;
12
13 void init() override;
14 void calc() override;
15
17 [[nodiscard]] u32 loadFlags() const override {
18 return 1;
19 }
20
22 [[nodiscard]] const EGG::Vector3f &getCollisionTranslation() const override {
23 return m_colTranslate;
24 }
25
26 [[nodiscard]] Kart::Reaction onCollision(Kart::KartObject *kartObj,
27 Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj,
28 EGG::Vector3f &hitDepth) override;
29
30private:
31 enum class State {
32 Tangible = 0,
33 Intangible = 1,
34 };
35
36 void calcTangible();
37 void calcIntangible();
38 void calcTangibleSub();
39
40 void checkSphereFull();
41 void breakRock();
42
43 State m_state;
44 f32 m_startYPos;
45 EGG::Vector3f m_colTranslate;
46 f32 m_angSpd;
47 int m_cooldownTimer;
48 f32 m_angRad;
49
50 static constexpr f32 INITIAL_ANGULAR_SPEED = 3.0f;
51};
52
53} // namespace Field
The falling rocks on GCN DK Mountain.
Definition ObjectRock.hh:8
ObjectRock(const System::MapdataGeoObj &params)
@addr {0x8076F2E0}
Definition ObjectRock.cc:10
The highest level abstraction for a kart.
Definition KartObject.hh:11
Pertains to collision.
@ Intangible
Ignore collision with the unit.
A 3D float vector.
Definition Vector.hh:88