Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectPylon.hh
1
#pragma once
2
3
#include "game/field/obj/ObjectCollidable.hh"
4
5
namespace
Kinoko::Field
{
6
8
class
ObjectPylon final :
public
ObjectCollidable {
9
public
:
10
ObjectPylon(
const
System::MapdataGeoObj
¶ms);
11
~ObjectPylon()
override
;
12
13
void
init()
override
;
14
void
calc()
override
;
15
17
[[nodiscard]]
LoadFlags
loadFlags
()
const override
{
18
return
LoadFlags
(
eLoadFlags::Calc
);
19
}
20
21
Kart::Reaction
onCollision
(
Kart::KartObject
*kartObj,
Kart::Reaction
reactionOnKart,
22
Kart::Reaction
reactionOnObj,
EGG::Vector3f
&hitDepth)
override
;
23
24
private
:
25
enum
State {
26
Idle = 0,
27
Moving = 1,
28
Hide = 2,
29
ComeBack = 3,
30
Hiding = 4,
31
Hit = 5,
32
};
33
34
void
checkIntraCollision
(
const
EGG::Vector3f
&hitDepth);
35
36
void
startHit(f32 velFactor,
EGG::Vector3f
&hitDepth);
37
38
void
calcHit();
39
void
calcHiding();
40
void
calcHide();
41
void
calcComeBack();
42
43
State m_state;
44
std::array<ObjectPylon *, 2> m_neighbors;
45
const
EGG::Vector3f
m_initPos;
46
const
EGG::Vector3f
m_initScale;
47
const
EGG::Vector3f
m_initRot;
48
u32
m_stateStartFrame
;
49
u32
m_numBounces
;
50
EGG::Vector3f
m_vel
;
51
EGG::Vector3f
m_angVel
;
52
53
static
constexpr
f32 RADIUS = 120.0f;
54
static
constexpr
f32 FALL_VEL = 20.0f;
55
57
static
constexpr
u32
STATE_COOLDOWN_FRAMES
= 5;
58
};
59
60
}
// namespace Kinoko::Field
Kinoko::Field::ObjectBase::LoadFlags
EGG::TBitFlag< u8, eLoadFlags > LoadFlags
A bitfield of eLoadFlags that represents the update requirements of the object.
Definition
ObjectBase.hh:36
Kinoko::Field::ObjectBase::eLoadFlags::Calc
@ Calc
The state of the object should be recalculated every frame.
Definition
ObjectBase.hh:30
Kinoko::Field::ObjectPylon::m_angVel
EGG::Vector3f m_angVel
Added to rotation while in Hit state.
Definition
ObjectPylon.hh:51
Kinoko::Field::ObjectPylon::checkIntraCollision
void checkIntraCollision(const EGG::Vector3f &hitDepth)
Definition
ObjectPylon.cc:170
Kinoko::Field::ObjectPylon::onCollision
Kart::Reaction onCollision(Kart::KartObject *kartObj, Kart::Reaction reactionOnKart, Kart::Reaction reactionOnObj, EGG::Vector3f &hitDepth) override
Definition
ObjectPylon.cc:106
Kinoko::Field::ObjectPylon::m_stateStartFrame
u32 m_stateStartFrame
Frame when pylon entered the current m_state.
Definition
ObjectPylon.hh:48
Kinoko::Field::ObjectPylon::m_vel
EGG::Vector3f m_vel
Velocity used in Hit and ComeBack states.
Definition
ObjectPylon.hh:50
Kinoko::Field::ObjectPylon::loadFlags
LoadFlags loadFlags() const override
Returns a bitmask indicating which lifecycle hooks should be called for the object.
Definition
ObjectPylon.hh:17
Kinoko::Field::ObjectPylon::m_numBounces
u32 m_numBounces
Number of floor collisions while in Hit state.
Definition
ObjectPylon.hh:49
Kinoko::Field::ObjectPylon::STATE_COOLDOWN_FRAMES
static constexpr u32 STATE_COOLDOWN_FRAMES
Minimum frames before a state change can occur.
Definition
ObjectPylon.hh:57
Kinoko::Kart::KartObject
The highest level abstraction for a kart.
Definition
KartObject.hh:11
Kinoko::System::MapdataGeoObj
Definition
MapdataGeoObj.hh:9
Kinoko::Field
Pertains to collision.
Definition
BoxColManager.cc:10
Kinoko::Kart::Reaction
Reaction
Represents the different reactions that can occur when a kart collides with an object.
Definition
Reaction.hh:8
Kinoko::EGG::Vector3f
A 3D float vector.
Definition
Vector.hh:107
game
field
obj
ObjectPylon.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0