31 #include "../../Core/Math/cl_math.h" 37 template<
typename Type>
48 return mix(values[index], values[index2], t);
53 if (timestamps.empty())
60 index = binary_search(timestamp);
61 index2 =
min(index + 1, timestamps.size() - 1);
63 float start = timestamps[index];
64 float end = timestamps[index2];
66 return clamp((timestamp - start) / (end - start), 0.0f, 1.0f);
72 size_t binary_search(
float timestamp)
const 75 size_t imax = timestamps.size() - 1;
78 size_t imid = imin + (imax - imin) / 2;
79 if (timestamps[imid] > timestamp)
84 if (imin < timestamps.size() - 1)
102 size_t index, index2;
float find_animation_indices(float timestamp, size_t &index, size_t &index2) const
Definition: model_data_animation_timeline.h:51
A min(A a, B b)
Definition: cl_math.h:51
std::vector< float > timestamps
Definition: model_data_animation_timeline.h:41
static Quaternionx< float > lerp(const Quaternionx< float > &quaternion_initial, const Quaternionx< float > &quaternion_final, float lerp_time)
Linear Quaternion Interpolation.
Quaternion - Float.
Definition: quaternion.h:188
A list of time stamps and the values to be used for each.
Definition: model_data_animation_timeline.h:38
Type get_value(float timestamp) const
Definition: model_data_animation_timeline.h:44
4D matrix
Definition: mat2.h:52
A mix(A a, B b, C mix)
Definition: cl_math.h:97
std::vector< Type > values
Definition: model_data_animation_timeline.h:42
C clamp(A val, B minval, C maxval)
Definition: cl_math.h:91