30 lines
816 B
Rust
30 lines
816 B
Rust
use super::{
|
|
entities::common::AnimationData,
|
|
keyframe::{Keyframe, RenderedKeyframe},
|
|
};
|
|
|
|
pub fn timestamp_to_frame(timestamp: f32, fps: i16) -> i32 {
|
|
return (timestamp * fps as f32).round() as i32;
|
|
}
|
|
|
|
pub fn render_keyframe(
|
|
keyframe: Keyframe,
|
|
animation_data: &AnimationData,
|
|
index: usize,
|
|
curr_frame: i32,
|
|
fps: i16,
|
|
) -> RenderedKeyframe {
|
|
let animation_start_frame = timestamp_to_frame(animation_data.offset, fps);
|
|
let frame_offset = timestamp_to_frame(keyframe.offset, fps);
|
|
let absolute_frame = animation_start_frame + frame_offset;
|
|
let distance_from_curr = absolute_frame - curr_frame;
|
|
|
|
RenderedKeyframe {
|
|
absolute_frame,
|
|
keyframe,
|
|
index,
|
|
distance_from_curr,
|
|
abs_distance_from_curr: distance_from_curr.abs(),
|
|
}
|
|
}
|