A reimplementation of Mario Kart Wii's physics engine in C++
Loading...
Searching...
No Matches
ObjectVolcanoRock.hh
1#pragma once
2
3#include "game/field/obj/ObjectKCL.hh"
4
5#include "game/system/RaceManager.hh"
6
7namespace Field {
8
10class ObjectVolcanoRock final : public ObjectKCL {
11public:
13 ~ObjectVolcanoRock() override;
14
15 void calc() override;
16
18 [[nodiscard]] u32 loadFlags() const override {
19 return 1;
20 }
21
23 [[nodiscard]] const char *getKclName() const override {
24 return m_variant ? "VolcanoRock2" : "VolcanoRock1";
25 }
26
28 [[nodiscard]] const EGG::Matrix34f &getUpdatedMatrix(u32 timeOffset) override {
29 u32 t = System::RaceManager::Instance()->timer() - timeOffset;
30 m_rtMat.makeRT(m_initialRot, calcPos(t));
31 return m_rtMat;
32 }
33
35 [[nodiscard]] f32 colRadiusAdditionalLength() const override {
36 return 2000.0f + m_zAmplitude;
37 }
38
39private:
40 EGG::Vector3f calcPos(u32 frame);
41
42 const EGG::Vector3f m_initialPos;
43 const EGG::Vector3f m_initialRot;
44 const s16 m_phaseShift;
45 const s16 m_zPeriod;
46 const s16 m_yPeriod;
47 const f32 m_zAmplitude;
48 const f32 m_yAmplitude;
49 const f32 m_zAngVel;
50 const f32 m_yAngVel;
51 const bool m_variant;
53};
54
55} // namespace Field
A 3 x 4 matrix.
Definition Matrix.hh:8
void makeRT(const Vector3f &r, const Vector3f &t)
Sets rotation-translation matrix.
Definition Matrix.cc:71
The oscillating platforms before and after the indoor section on Grumble Volcano.
const f32 m_yAngVel
2pi / m_yPeriod
const f32 m_zAmplitude
Scalar applied to computed z-axis position.
const f32 m_yAmplitude
Scalar applied to computed y-axis position.
EGG::Matrix34f m_rtMat
Rotation and translation matrix.
const f32 m_zAngVel
2pi / m_zPeriod
const bool m_variant
Differentiates which KCL is used.
const s16 m_zPeriod
Framecount of the platform's movement period along z-axis.
const s16 m_phaseShift
Additional framecount applied when calculating z-axis position.
const s16 m_yPeriod
Framecount of the platform's movement period along y-axis.
Pertains to collision.
A 3D float vector.
Definition Vector.hh:88