23 [[nodiscard]] u32 loadFlags()
const override {
28 [[nodiscard]] f32 getCollisionRadius()
const override {
29 return 245.0f *
static_cast<f32
>(m_mapObj->setting(2));
33 [[nodiscard]]
const EGG::Matrix34f &getUpdatedMatrix(u32 )
override {
35 m_workMatrix = m_transform;
39 [[nodiscard]] f32 getScaleY(u32 timeOffset)
const override;
40 [[nodiscard]]
bool checkCollision(f32 radius,
const EGG::Vector3f &pos,
42 KCLTypeMask *maskOut, u32 timeOffset)
override;
43 [[nodiscard]]
bool checkCollisionCached(f32 radius,
const EGG::Vector3f &pos,
45 KCLTypeMask *maskOut, u32 timeOffset)
override;
49 void enterExpanding() {
53 void enterEruptingUp();
56 void enterEruptingStay() {
57 m_scaledHeight = m_initScaledHeight;
61 void enterEruptingDown() {
67 m_pole->setActive(
false);
68 m_pole->disableCollision();
75 void calcExpanding() {}
77 void calcEruptingUp();
78 void calcEruptingStay();
81 void calcEruptingDown() {
83 m_scaledHeight -
m_scaleDelta *
static_cast<f32
>(m_cycleFrame - m_stateStart[3]);
99 s32 m_eruptUpDuration;
100 s32 m_eruptDownDuration;
101 std::array<s32, 6> m_stateStart;
103 f32 m_initScaledHeight;
111 static u32 s_flamePoleCount;
113 static constexpr std::array<StateManagerEntry, 6> STATE_ENTRIES = {{
115 &ObjectFlamePoleFoot::calcExpanding>(0)},
117 &ObjectFlamePoleFoot::calcEruptingUp>(1)},
119 &ObjectFlamePoleFoot::calcEruptingStay>(2)},
121 &ObjectFlamePoleFoot::calcEruptingDown>(3)},
123 &ObjectFlamePoleFoot::calcDormant>(4)},
125 &ObjectFlamePoleFoot::calcState5>(5)},
128 static constexpr u32 CYCLE_FRAMES = 540;
Contexts can be used to restore a previous memory state for the current session.