use euclid::RigidTransform3D;
use malloc_size_of_derive::MallocSizeOf;
use serde::{Deserialize, Serialize};
use crate::{InputId, Joint};
#[derive(Clone, Copy, Debug, Serialize, Deserialize, MallocSizeOf)]
pub struct ApiSpace;
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
pub enum BaseSpace {
Local,
Floor,
Viewer,
BoundedFloor,
TargetRay(InputId),
Grip(InputId),
Joint(InputId, Joint),
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
pub struct Space {
pub base: BaseSpace,
pub offset: RigidTransform3D<f32, ApiSpace, ApiSpace>,
}