/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use euclid::RigidTransform3D; use crate::{InputId, Joint}; #[derive(Clone, Copy, Debug)] #[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::Deserialize))] /// A stand-in type for "the space isn't statically known since /// it comes from client side code" pub struct ApiSpace; #[derive(Clone, Copy, Debug, PartialEq)] #[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::Deserialize))] pub enum BaseSpace { Local, Floor, Viewer, BoundedFloor, TargetRay(InputId), Grip(InputId), Joint(InputId, Joint), } #[derive(Clone, Copy, Debug)] #[cfg_attr(feature = "ipc", derive(serde::Serialize, serde::Deserialize))] pub struct Space { pub base: BaseSpace, pub offset: RigidTransform3D, }