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();

	}