1use euclid::RigidTransform3D;
6
7use crate::{InputId, Joint};
8
9#[derive(Clone, Copy, Debug)]
10#[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::Deserialize))]
11pub struct ApiSpace;
14
15#[derive(Clone, Copy, Debug, PartialEq)]
16#[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::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)]
28#[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::Deserialize))]
29pub struct Space {
30 pub base: BaseSpace,
31 pub offset: RigidTransform3D<f32, ApiSpace, ApiSpace>,
32}