3#include <Core/Animation/KeyFramedValue.hpp>
4#include <Core/Animation/Pose.hpp>
5#include <Core/Animation/PoseOperation.hpp>
6#include <Core/Math/Interpolation.hpp>
20 CORE_ASSERT( keyframes.
size() > 0,
"Keyframe vectors must contain at least one keyframe." );
21 auto [i, j, dt] = keyframes.
findRange( t );
28 CORE_ASSERT( keyframes.
size() > 0,
"Keyframe vectors must contain at least one keyframe." );
29 auto [i, j, dt] = keyframes.
findRange( t );
32 return keyframes[i].second;
38 CORE_ASSERT( keyframes.
size() > 0,
"Keyframe vectors must contain at least one keyframe." );
39 auto [i, j, dt] = keyframes.
findRange( t );
42 return keyframes[i].second;
48 CORE_ASSERT( keyframes.
size() > 0,
"Keyframe vectors must contain at least one keyframe." );
49 auto [i, j, dt] = keyframes.
findRange( t );
50 return interpolatePoses( keyframes[i].second, keyframes[j].second, dt );
size_t size() const override
std::tuple< size_t, size_t, Scalar > findRange(Scalar t) const
T linearInterpolate(const T &v0, const T &v1, const Scalar t)
hepler function to manage enum as underlying types in VariableSet