3#include "game/field/StateManager.hh"
4#include "game/field/obj/ObjectCollidable.hh"
6#include "game/kart/KartCollide.hh"
7#include "game/kart/KartObject.hh"
11class ObjectHwanwan :
public ObjectCollidable,
public StateManager {
12 friend class ObjectHwanwanManager;
16 ~ObjectHwanwan()
override;
22 [[nodiscard]] u32 loadFlags()
const override {
27 [[nodiscard]]
const char *getKclName()
const override {
32 void loadRail()
override {}
35 Kart::Reaction onCollision(
Kart::KartObject *kartObj, Kart::Reaction reactionOnKart,
37 return kartObj->speedRatioCapped() < 0.5f ? Kart::Reaction::WallAllSpeed : reactionOnKart;
49 if (m_touchingGround) {
50 m_bounceVel += EGG::Vector3f::ey * 12.0f;
57 void checkFloorCollision();
67 bool m_touchingGround;
71 static constexpr f32 DIAMETER = 400.0f;
74 static constexpr std::array<StateManagerEntry, 2> STATE_ENTRIES = {{
75 {StateEntry<ObjectHwanwan, &ObjectHwanwan::enterState0, &ObjectHwanwan::calcState0>(0)},
76 {StateEntry<ObjectHwanwan, &ObjectHwanwan::enterState1, &ObjectHwanwan::calcState1>(1)},
80class ObjectHwanwanManager :
public ObjectCollidable {
83 ~ObjectHwanwanManager()
override;
89 [[nodiscard]] u32 loadFlags()
const override {
94 void loadGraphics()
override {}
97 void createCollision()
override {}
102 ObjectHwanwan *m_hwanwan;
The highest level abstraction for a kart.