Voltray Engine Docs
Loading...
Searching...
No Matches
CameraAnimator.h
Go to the documentation of this file.
1#pragma once
2
3#include "../../Math/Vec3.h"
4#include <functional>
5
6// Forward declaration
7class BaseCamera;
8
18{
19public:
25
30 void Update(float deltaTime);
31
38 void FocusOnPosition(const Vec3 &targetPosition, float duration = 1.0f,
39 std::function<void()> onComplete = nullptr);
40
48 void MoveTo(const Vec3 &newPosition, const Vec3 &newTarget, float duration = 1.0f,
49 std::function<void()> onComplete = nullptr);
50
55 bool IsAnimating() const { return m_IsAnimating; }
56
60 void StopAnimation();
61
65 enum class EasingType
66 {
67 Linear,
69 EaseIn,
70 EaseOut,
73 };
74
79 void SetEasingType(EasingType type) { m_EasingType = type; }
80
81private:
87 float ApplyEasing(float t) const;
88
96 Vec3 Lerp(const Vec3 &start, const Vec3 &end, float t) const;
97
98 BaseCamera &m_Camera;
99
100 // Animation state
101 bool m_IsAnimating = false;
102 float m_AnimationTime = 0.0f;
103 float m_AnimationDuration = 1.0f;
104 EasingType m_EasingType = EasingType::EaseInOut;
105
106 // Animation targets
107 Vec3 m_StartPosition;
108 Vec3 m_StartTarget;
109 Vec3 m_EndPosition;
110 Vec3 m_EndTarget;
111
112 // Completion callback
113 std::function<void()> m_OnComplete;
114};
Abstract base class for all camera types.
Definition BaseCamera.h:34
Handles smooth camera transitions and animations.
Definition CameraAnimator.h:18
void Update(float deltaTime)
Update the animation - call this every frame.
Definition CameraAnimator.cpp:11
EasingType
Set the easing function type.
Definition CameraAnimator.h:66
bool IsAnimating() const
Check if any animation is currently active.
Definition CameraAnimator.h:55
void MoveTo(const Vec3 &newPosition, const Vec3 &newTarget, float duration=1.0f, std::function< void()> onComplete=nullptr)
Smoothly move camera to a new position and target.
Definition CameraAnimator.cpp:61
void SetEasingType(EasingType type)
Set the easing type for animations.
Definition CameraAnimator.h:79
void StopAnimation()
Stop any current animation.
Definition CameraAnimator.cpp:79
void FocusOnPosition(const Vec3 &targetPosition, float duration=1.0f, std::function< void()> onComplete=nullptr)
Smoothly focus the camera on a target position.
Definition CameraAnimator.cpp:49
Definition Vec3.h:5