rive_rs/animation/
key_frame_id.rsuse crate::animation::KeyFrame;
use crate::core::{Core, Object, ObjectRef, OnAdded, Property};
use super::Animator;
#[derive(Debug, Default)]
pub struct KeyFrameId {
key_frame: KeyFrame,
value: Property<u64>,
}
impl ObjectRef<'_, KeyFrameId> {
pub fn value(&self) -> u64 {
self.value.get()
}
pub fn set_value(&self, value: u64) {
self.value.set(value);
}
}
impl ObjectRef<'_, KeyFrameId> {
pub fn apply(&self, core: Object, property_key: u64, _mix: f32) {
core.as_ref().animate(&core.as_ref(), property_key, &Animator::new(self.value()));
}
pub fn apply_interpolation(
&self,
core: Object,
property_key: u64,
_current_time: f32,
_next_frame: ObjectRef<'_, KeyFrame>,
_mix: f32,
) {
core.as_ref().animate(&core.as_ref(), property_key, &Animator::new(self.value()));
}
}
impl Core for KeyFrameId {
parent_types![(key_frame, KeyFrame)];
properties![(122, value, set_value), key_frame];
}
impl OnAdded for ObjectRef<'_, KeyFrameId> {
on_added!(KeyFrame);
}