1#include "ObjectDossunNormal.hh"
7 : ObjectDossun(params) {}
10ObjectDossunNormal::~ObjectDossunNormal() =
default;
13void ObjectDossunNormal::init() {
16 m_stompState = StompState::Inactive;
19 if (m_currRot <= F_PI) {
25void ObjectDossunNormal::calc() {
26 m_touchingGround =
false;
28 switch (m_stompState) {
29 case StompState::Inactive:
32 case StompState::Active:
41void ObjectDossunNormal::startStill() {
42 m_anmState = AnmState::Still;
45 m_flags.setBit(eFlags::Rotation);
47 m_stompState = StompState::Inactive;
48 m_stillTimer =
static_cast<s32
>(m_mapObj->setting(3));
52void ObjectDossunNormal::startBeforeFall() {
53 m_stompState = StompState::Active;
54 m_anmState = AnmState::BeforeFall;
55 m_beforeFallTimer =
static_cast<s32
>(BEFORE_FALL_DURATION);
56 m_cycleTimer =
static_cast<s32
>(m_fullDuration);
60void ObjectDossunNormal::calcInactive() {
61 constexpr s32 SHAKE_DURATION = 30;
62 constexpr s32 SHAKE_PHASE_CHANGE = 30;
63 constexpr f32 SHAKE_AMPLITUDE = 30.0f;
65 if (--m_stillTimer == 0) {
69 if (m_stillTimer <= SHAKE_DURATION) {
70 m_shakePhase += SHAKE_PHASE_CHANGE;
71 m_flags.setBit(eFlags::Position);
72 m_pos.y = m_initialPosY +
73 SHAKE_AMPLITUDE *
EGG::Mathf::sin(
static_cast<f32
>(m_shakePhase) * DEG2RAD);