/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include "SimpleAnimationController.hpp" #include "Base/FrameMetadata.hpp" namespace OpenVulkano::Scene { double SimpleAnimationController::GetProgress() { double progress = m_elapsed / m_duration; if(progress >= 1.0) progress = 1; return progress; } void SimpleAnimationController::Tick() { if(!m_node || m_duration <= 0 || m_elapsed > m_duration) return; m_elapsed += CURRENT_FRAME.frameTime; double progress = GetProgress(); Math::Pose currentPose = m_initialPose.Interpolate(m_targetPose, progress); m_node->SetMatrix(currentPose.ToMatrix()); if(m_elapsed > m_duration) m_completionEvent.NotifyAll(this); } }