ranim_core/core_item/
mod.rs1use std::any::Any;
9
10use dyn_clone::DynClone;
11
12use crate::{
13 Extract,
14 core_item::{camera_frame::CameraFrame, mesh_item::MeshItem, vitem::VItem},
15};
16
17pub mod camera_frame;
19pub mod mesh_item;
21pub mod vitem;
23
24#[derive(Debug, Clone, PartialEq)]
26pub enum CoreItem {
27 CameraFrame(CameraFrame),
29 VItem(VItem),
31 MeshItem(MeshItem),
33}
34
35pub trait AnyExtractCoreItem: Any + Extract<Target = CoreItem> + DynClone {}
37impl<T: Extract<Target = CoreItem> + Any + DynClone> AnyExtractCoreItem for T {}
38
39dyn_clone::clone_trait_object!(AnyExtractCoreItem);
40
41#[derive(Clone)]
43pub struct DynItem(pub Box<dyn AnyExtractCoreItem>);
44
45impl Extract for DynItem {
46 type Target = CoreItem;
47 fn extract_into(&self, buf: &mut Vec<Self::Target>) {
48 self.0.extract_into(buf);
49 }
50}