コード例 #1
0
ファイル: Animation.cpp プロジェクト: ecraven/pioneer
	void Animation::Finish()
	{
		if (m_completed) return;
		m_targetFunc(1.0f);
		m_running = false;
		m_completed = true;
	}
コード例 #2
0
ファイル: Animation.cpp プロジェクト: lwho/pioneer
float Animation::Update(float time)
{
	if (m_completed)
		return 0.0f;

	const float remaining = m_continuous ? m_duration : (m_duration - time);
	m_completed = remaining < 0.0f;

	float pos;
	if (m_continuous)
		pos = m_completed ? m_duration : fmodf(time, m_duration);
	else
		pos = m_completed ? m_duration : Clamp(time, 0.0f, m_duration);

	m_targetFunc(m_wrapFunc(m_easingFunc, pos, m_duration));

	m_running = !m_completed;

	if (m_completed && m_callback)
		m_callback();

	return remaining;
}