changed path id
This commit is contained in:
@@ -43,25 +43,25 @@ pub trait ViewTrait {
|
|||||||
|
|
||||||
pub trait InputTrait {
|
pub trait InputTrait {
|
||||||
/// Get the haptic action at the specified path.
|
/// Get the haptic action at the specified path.
|
||||||
fn get_haptics(&self, path: ActionId) -> Result<Action<Haptic>>;
|
fn get_haptics(&self, path: ActionPath) -> Result<Action<Haptic>>;
|
||||||
/// Get the pose action at the specified path.
|
/// Get the pose action at the specified path.
|
||||||
fn get_pose(&self, path: ActionId) -> Result<Action<Pose>>;
|
fn get_pose(&self, path: ActionPath) -> Result<Action<Pose>>;
|
||||||
/// Get the float action at the specified path.
|
/// Get the float action at the specified path.
|
||||||
fn get_float(&self, path: ActionId) -> Result<Action<f32>>;
|
fn get_float(&self, path: ActionPath) -> Result<Action<f32>>;
|
||||||
/// Get the boolean action at the specified path.
|
/// Get the boolean action at the specified path.
|
||||||
fn get_bool(&self, path: ActionId) -> Result<Action<bool>>;
|
fn get_bool(&self, path: ActionPath) -> Result<Action<bool>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This impl is moved outside of the trait to ensure that InputTrait stays object safe.
|
// This impl is moved outside of the trait to ensure that InputTrait stays object safe.
|
||||||
impl dyn InputTrait {
|
impl dyn InputTrait {
|
||||||
/// Get the action at the specified path.
|
/// Get the action at the specified path.
|
||||||
pub fn get_action<A: ActionType>(&self, path: ActionId) -> Result<Action<A>> {
|
pub fn get_action<A: ActionType>(&self, path: ActionPath) -> Result<Action<A>> {
|
||||||
A::get(self, path)
|
A::get(self, path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ActionTrait {
|
pub trait ActionTrait {
|
||||||
fn id(&self) -> ActionId;
|
fn id(&self) -> ActionPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents input actions, such as bools, floats, and poses
|
/// Represents input actions, such as bools, floats, and poses
|
||||||
|
|||||||
@@ -13,9 +13,33 @@ pub struct Bindings {}
|
|||||||
|
|
||||||
/// THIS IS NOT COMPLETE, im not sure how i am going to index actions currently.
|
/// THIS IS NOT COMPLETE, im not sure how i am going to index actions currently.
|
||||||
#[derive(Clone, Copy, PartialEq)]
|
#[derive(Clone, Copy, PartialEq)]
|
||||||
pub struct ActionId {
|
pub struct ActionPath {
|
||||||
pub handedness: Handedness,
|
pub device: DevicePath,
|
||||||
pub device: XrDevice,
|
pub subpath: SubPath,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, PartialEq)]
|
||||||
|
pub enum DevicePath {
|
||||||
|
LeftHand,
|
||||||
|
RightHand,
|
||||||
|
Head,
|
||||||
|
Gamepad,
|
||||||
|
Treadmill,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, PartialEq)]
|
||||||
|
pub enum SubPath {
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Start,
|
||||||
|
Home,
|
||||||
|
End,
|
||||||
|
Select,
|
||||||
|
Joystick,
|
||||||
|
Trigger,
|
||||||
|
Squeeze,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq)]
|
#[derive(Clone, Copy, PartialEq)]
|
||||||
@@ -25,24 +49,19 @@ pub enum Handedness {
|
|||||||
None,
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq)]
|
|
||||||
pub enum XrDevice {
|
|
||||||
Controller,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Haptic;
|
pub struct Haptic;
|
||||||
pub struct Pose;
|
pub struct Pose;
|
||||||
|
|
||||||
pub trait ActionType: Sized {
|
pub trait ActionType: Sized {
|
||||||
type Inner: ?Sized;
|
type Inner: ?Sized;
|
||||||
|
|
||||||
fn get(input: &dyn InputTrait, path: ActionId) -> Result<Action<Self>>;
|
fn get(input: &dyn InputTrait, path: ActionPath) -> Result<Action<Self>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ActionType for Haptic {
|
impl ActionType for Haptic {
|
||||||
type Inner = dyn HapticTrait;
|
type Inner = dyn HapticTrait;
|
||||||
|
|
||||||
fn get(input: &dyn InputTrait, path: ActionId) -> Result<Action<Self>> {
|
fn get(input: &dyn InputTrait, path: ActionPath) -> Result<Action<Self>> {
|
||||||
input.get_haptics(path)
|
input.get_haptics(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +69,7 @@ impl ActionType for Haptic {
|
|||||||
impl ActionType for Pose {
|
impl ActionType for Pose {
|
||||||
type Inner = dyn ActionInputTrait<Pose>;
|
type Inner = dyn ActionInputTrait<Pose>;
|
||||||
|
|
||||||
fn get(input: &dyn InputTrait, path: ActionId) -> Result<Action<Self>> {
|
fn get(input: &dyn InputTrait, path: ActionPath) -> Result<Action<Self>> {
|
||||||
input.get_pose(path)
|
input.get_pose(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,7 +77,7 @@ impl ActionType for Pose {
|
|||||||
impl ActionType for f32 {
|
impl ActionType for f32 {
|
||||||
type Inner = dyn ActionInputTrait<f32>;
|
type Inner = dyn ActionInputTrait<f32>;
|
||||||
|
|
||||||
fn get(input: &dyn InputTrait, path: ActionId) -> Result<Action<Self>> {
|
fn get(input: &dyn InputTrait, path: ActionPath) -> Result<Action<Self>> {
|
||||||
input.get_float(path)
|
input.get_float(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,7 +85,7 @@ impl ActionType for f32 {
|
|||||||
impl ActionType for bool {
|
impl ActionType for bool {
|
||||||
type Inner = dyn ActionInputTrait<bool>;
|
type Inner = dyn ActionInputTrait<bool>;
|
||||||
|
|
||||||
fn get(input: &dyn InputTrait, path: ActionId) -> Result<Action<Self>> {
|
fn get(input: &dyn InputTrait, path: ActionPath) -> Result<Action<Self>> {
|
||||||
input.get_bool(path)
|
input.get_bool(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user