1use euclid::RigidTransform3D;
6use malloc_size_of_derive::MallocSizeOf;
7use serde::{Deserialize, Serialize};
8
9use crate::{InputId, Joint};
10
11#[derive(Clone, Copy, Debug, Serialize, Deserialize, MallocSizeOf)]
12pub struct ApiSpace;
15
16#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
17pub enum BaseSpace {
18 Local,
19 Floor,
20 Viewer,
21 BoundedFloor,
22 TargetRay(InputId),
23 Grip(InputId),
24 Joint(InputId, Joint),
25}
26
27#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
28pub struct Space {
29 pub base: BaseSpace,
30 pub offset: RigidTransform3D<f32, ApiSpace, ApiSpace>,
31}