diff --git a/examples/ExampleApps/MovingCubeApp.cpp b/examples/ExampleApps/MovingCubeApp.cpp index bc9be4b..ca82b37 100644 --- a/examples/ExampleApps/MovingCubeApp.cpp +++ b/examples/ExampleApps/MovingCubeApp.cpp @@ -61,9 +61,15 @@ namespace OpenVulkano m_cameraControl.Init(&m_camera); m_cameraControl.SetDefaultKeybindings(); + m_animationController = std::make_unique(); + m_animationController->SetNode(&m_node); + m_animationController->SetDuration(3); + OpenVulkano::Math::Pose srcPose(OpenVulkano::Math::Quaternion(), OpenVulkano::Math::Vector3f_SIMD(-3, 0, 0)); + m_animationController->SetInitialPose(srcPose); + OpenVulkano::Math::Pose destPose(OpenVulkano::Math::Quaternion(), OpenVulkano::Math::Vector3f_SIMD(3, 0, 0)); - m_animationController = std::make_unique(&m_node, srcPose, destPose, 3); + m_animationController->SetTargetPose(destPose); } void Tick() override diff --git a/openVulkanoCpp/Scene/SimpleAnimationController.cpp b/openVulkanoCpp/Scene/SimpleAnimationController.cpp index 03fae9a..fd3ca2e 100644 --- a/openVulkanoCpp/Scene/SimpleAnimationController.cpp +++ b/openVulkanoCpp/Scene/SimpleAnimationController.cpp @@ -11,15 +11,6 @@ namespace OpenVulkano::Scene { - SimpleAnimationController::SimpleAnimationController(OpenVulkano::Scene::Node *node, OpenVulkano::Math::Pose initialPose, OpenVulkano::Math::Pose targetPose, float duration) - { - m_node = node; - m_initialPose = initialPose; - m_targetPose = targetPose; - m_duration = duration; - m_event += EventHandler(this, &SimpleAnimationController::OnAnimationCompleted); - } - void SimpleAnimationController::OnAnimationCompleted() { std::swap(m_targetPose, m_initialPose); diff --git a/openVulkanoCpp/Scene/SimpleAnimationController.hpp b/openVulkanoCpp/Scene/SimpleAnimationController.hpp index 720e9f8..8c2dfc5 100644 --- a/openVulkanoCpp/Scene/SimpleAnimationController.hpp +++ b/openVulkanoCpp/Scene/SimpleAnimationController.hpp @@ -24,8 +24,13 @@ namespace OpenVulkano::Scene float m_elapsed = 0; public: - SimpleAnimationController() = default; - SimpleAnimationController(OpenVulkano::Scene::Node *node, OpenVulkano::Math::Pose initialPose, OpenVulkano::Math::Pose targetPose, float duration); + SimpleAnimationController() { m_event += EventHandler(this, &SimpleAnimationController::OnAnimationCompleted); } + + void SetNode(OpenVulkano::Scene::Node *node) { m_node = node; } + void SetInitialPose(OpenVulkano::Math::Pose pose) { m_initialPose = pose; } + void SetTargetPose(OpenVulkano::Math::Pose pose) { m_targetPose = pose; } + void SetDuration(float duration) { m_duration = duration; } + void OnAnimationCompleted(); void Tick() override; };