Setting up SimpleAnimationControllers using setters
This commit is contained in:
@@ -61,9 +61,15 @@ namespace OpenVulkano
|
||||
m_cameraControl.Init(&m_camera);
|
||||
m_cameraControl.SetDefaultKeybindings();
|
||||
|
||||
m_animationController = std::make_unique<OpenVulkano::Scene::SimpleAnimationController>();
|
||||
m_animationController->SetNode(&m_node);
|
||||
m_animationController->SetDuration(3);
|
||||
|
||||
OpenVulkano::Math::Pose srcPose(OpenVulkano::Math::Quaternion<float>(), OpenVulkano::Math::Vector3f_SIMD(-3, 0, 0));
|
||||
m_animationController->SetInitialPose(srcPose);
|
||||
|
||||
OpenVulkano::Math::Pose destPose(OpenVulkano::Math::Quaternion<float>(), OpenVulkano::Math::Vector3f_SIMD(3, 0, 0));
|
||||
m_animationController = std::make_unique<OpenVulkano::Scene::SimpleAnimationController>(&m_node, srcPose, destPose, 3);
|
||||
m_animationController->SetTargetPose(destPose);
|
||||
}
|
||||
|
||||
void Tick() override
|
||||
|
||||
@@ -11,15 +11,6 @@
|
||||
|
||||
namespace OpenVulkano::Scene
|
||||
{
|
||||
SimpleAnimationController::SimpleAnimationController(OpenVulkano::Scene::Node *node, OpenVulkano::Math::Pose<float> initialPose, OpenVulkano::Math::Pose<float> 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);
|
||||
|
||||
@@ -24,8 +24,13 @@ namespace OpenVulkano::Scene
|
||||
float m_elapsed = 0;
|
||||
|
||||
public:
|
||||
SimpleAnimationController() = default;
|
||||
SimpleAnimationController(OpenVulkano::Scene::Node *node, OpenVulkano::Math::Pose<float> initialPose, OpenVulkano::Math::Pose<float> targetPose, float duration);
|
||||
SimpleAnimationController() { m_event += EventHandler(this, &SimpleAnimationController::OnAnimationCompleted); }
|
||||
|
||||
void SetNode(OpenVulkano::Scene::Node *node) { m_node = node; }
|
||||
void SetInitialPose(OpenVulkano::Math::Pose<float> pose) { m_initialPose = pose; }
|
||||
void SetTargetPose(OpenVulkano::Math::Pose<float> pose) { m_targetPose = pose; }
|
||||
void SetDuration(float duration) { m_duration = duration; }
|
||||
|
||||
void OnAnimationCompleted();
|
||||
void Tick() override;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user