virtual void update()override { for (auto& uni : m_units) { uni.update(); } switch (m_state.m_state) { case 0: { const bool finish = AllOf(m_units, [](const BossUnitBase& unit){ return unit.m_shot->isFinished(); }); if (finish) { m_state.nextState(120); } break; } case 1: if (m_state.isFinished()) { m_isFinish = true; } break; case 2: break; default: break; } m_state.update(); }
void update() { const double progressRate = Saturate(1.0*m_state.m_timer / (1.0*m_state.m_stateLimit)); const Vec2 focusPos = Vec2(3904, 4082); switch (m_state.m_state) { case 0: D2Camera::I()->m_pos = EaseInOut(m_startPos, focusPos, Easing::Cubic, progressRate); m_state.checkTimerAndGoNextState(150); break; case 1: D2Camera::I()->m_pos = focusPos; m_state.checkTimerAndGoNextState(60); break; case 2: D2Camera::I()->m_pos = EaseInOut(focusPos, m_startPos, Easing::Cubic, progressRate); m_state.checkTimerAndGoNextState(60); break; case 3: break; } m_state.update(); }