use crate::animation::{AnimatedProperty, Animation};
use crate::duration::TimeStamp;
use crate::id::ObjectId;
use crate::object::{SceneObject, Transform};
#[non_exhaustive]
#[derive(Clone, Debug)]
pub enum Operation {
AddObject(Box<SceneObject>),
RemoveObject { id: ObjectId, at: TimeStamp },
SetTransform { id: ObjectId, transform: Transform },
Animate { id: ObjectId, animation: Animation },
CancelAnimation {
id: ObjectId,
property: AnimatedProperty,
},
FireAudio(Box<crate::audio::AudioCue>),
EndScene,
}
#[non_exhaustive]
#[derive(Clone, Debug)]
pub enum ExportOp {
EmitFrame(oxideav_core::VideoFrame),
EmitAudio(Vec<f32>),
Raw {
format: &'static str,
payload: Vec<u8>,
},
EmitText(crate::object::TextRun),
}