Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
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
7
namespace
Kinoko::Field
{
8
10
class
ObjectVolcanoRock final :
public
ObjectKCL {
11
public
:
12
ObjectVolcanoRock(
const
System::MapdataGeoObj
¶ms);
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
39
private
:
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
;
52
EGG::Matrix34f
m_rtMat
;
53
};
54
55
}
// namespace Kinoko::Field
Kinoko::EGG::Matrix34f
A 3 x 4 matrix.
Definition
Matrix.hh:10
Kinoko::Field::ObjectVolcanoRock::m_phaseShift
const s16 m_phaseShift
Additional framecount applied when calculating z-axis position.
Definition
ObjectVolcanoRock.hh:44
Kinoko::Field::ObjectVolcanoRock::m_zAngVel
const f32 m_zAngVel
2pi / m_zPeriod
Definition
ObjectVolcanoRock.hh:49
Kinoko::Field::ObjectVolcanoRock::m_rtMat
EGG::Matrix34f m_rtMat
Rotation and translation matrix.
Definition
ObjectVolcanoRock.hh:52
Kinoko::Field::ObjectVolcanoRock::m_yAmplitude
const f32 m_yAmplitude
Scalar applied to computed y-axis position.
Definition
ObjectVolcanoRock.hh:48
Kinoko::Field::ObjectVolcanoRock::m_yPeriod
const s16 m_yPeriod
Framecount of the platform's movement period along y-axis.
Definition
ObjectVolcanoRock.hh:46
Kinoko::Field::ObjectVolcanoRock::m_yAngVel
const f32 m_yAngVel
2pi / m_yPeriod
Definition
ObjectVolcanoRock.hh:50
Kinoko::Field::ObjectVolcanoRock::m_zPeriod
const s16 m_zPeriod
Framecount of the platform's movement period along z-axis.
Definition
ObjectVolcanoRock.hh:45
Kinoko::Field::ObjectVolcanoRock::m_zAmplitude
const f32 m_zAmplitude
Scalar applied to computed z-axis position.
Definition
ObjectVolcanoRock.hh:47
Kinoko::Field::ObjectVolcanoRock::m_variant
const bool m_variant
Differentiates which KCL is used.
Definition
ObjectVolcanoRock.hh:51
Kinoko::System::MapdataGeoObj
Definition
MapdataGeoObj.hh:9
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
Kinoko::EGG::Vector3f
A 3D float vector.
Definition
Vector.hh:107
game
field
obj
ObjectVolcanoRock.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0