ranim_core/primitives/
mod.rs1use crate::{
2 Extract,
3 primitives::{camera_frame::CameraFrame, vitem::VItemPrimitive},
4};
5
6pub mod camera_frame;
8pub mod vitem;
10
11pub trait Primitive {
13 fn build_primitives<T: IntoIterator<Item = Self>>(iter: T) -> Primitives;
15}
16
17impl<T: Primitive + Clone> Extract for T {
18 type Target = Self;
19 fn extract(&self) -> Vec<Self::Target> {
20 vec![self.clone()]
21 }
22}
23
24#[derive(Debug, Clone, PartialEq)]
26pub enum Primitives {
27 CameraFrame(Vec<CameraFrame>),
29 VItemPrimitive(Vec<VItemPrimitive>),
31}
32
33impl Primitives {
34 pub fn boom(self) -> Vec<CoreItem> {
36 match self {
37 Primitives::CameraFrame(x) => x.into_iter().map(CoreItem::CameraFrame).collect(),
38 Primitives::VItemPrimitive(x) => x.into_iter().map(CoreItem::VItemPrimitive).collect(),
39 }
40 }
41}
42
43pub enum CoreItem {
45 CameraFrame(CameraFrame),
47 VItemPrimitive(VItemPrimitive),
49}