1#include "ObjectPsea.hh"
3#include "game/field/ObjectDirector.hh"
8ObjectPsea::ObjectPsea(
const System::MapdataGeoObj ¶ms)
9 : ObjectCollidable(params), m_period(F_TAU / static_cast<f32>(CYCLE_DURATION)) {
10 constexpr EGG::Vector3f POS_OFFSET = EGG::Vector3f(0.0f, 6.75f, 0.0f) * 96.0f;
11 constexpr EGG::Vector3f EXTRA_OFFSET = EGG::Vector3f(0.0f, 1.0f, 0.0f);
14 m_initPosY = (m_pos + POS_OFFSET + EXTRA_OFFSET).y;
16 auto *objDir = ObjectDirector::Instance();
17 ASSERT(!objDir->psea());
18 objDir->setPsea(
this);
22ObjectPsea::~ObjectPsea() =
default;
25void ObjectPsea::calc() {
26 constexpr f32 POS_OFFSET = 9590.399f;
27 constexpr f32 AMPLITUDE = 140.0f;
29 f32 sin = EGG::Mathf::sin(m_period *
static_cast<f32
>(m_frame));
31 if (CYCLE_DURATION < m_frame++) {
35 m_pos.y = m_initPosY + AMPLITUDE * sin + POS_OFFSET;
36 m_flags.setBit(eFlags::Position);