diff --git a/crates/bevy_xr/src/actions.rs b/crates/bevy_xr/src/actions.rs deleted file mode 100644 index 63c17f6..0000000 --- a/crates/bevy_xr/src/actions.rs +++ /dev/null @@ -1,107 +0,0 @@ -use std::{any::TypeId, marker::PhantomData}; - -use bevy_app::{App, Plugin}; -use bevy_ecs::resource::Resource; -use bevy_math::Vec2; - -pub struct ActionPlugin(PhantomData); - -impl Default for ActionPlugin { - fn default() -> Self { - Self(Default::default()) - } -} - -impl Plugin for ActionPlugin { - fn build(&self, app: &mut App) { - app.init_resource::() - .init_resource::>(); - app.world_mut().resource_mut::().0.push(A::info()); - } -} - -#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)] -pub enum ActionType { - Bool, - Float, - Vector, -} - -pub trait ActionTy: Send + Sync + Default + Clone + Copy { - const TYPE: ActionType; -} - -impl ActionTy for bool { - const TYPE: ActionType = ActionType::Bool; -} - -impl ActionTy for f32 { - const TYPE: ActionType = ActionType::Float; -} - -impl ActionTy for Vec2 { - const TYPE: ActionType = ActionType::Float; -} - -pub trait Action: Send + Sync + 'static { - type ActionType: ActionTy; - - fn info() -> ActionInfo; -} - -pub struct ActionInfo { - pub pretty_name: &'static str, - pub name: &'static str, - pub action_type: ActionType, - pub type_id: TypeId, -} - -#[derive(Resource, Default)] -pub struct ActionList(pub Vec); - -#[derive(Resource)] -pub struct ActionState { - previous_state: A::ActionType, - current_state: A::ActionType, -} - -impl Default for ActionState { - fn default() -> Self { - Self { - previous_state: Default::default(), - current_state: Default::default(), - } - } -} - -impl ActionState { - pub fn current_state(&self) -> A::ActionType { - self.current_state - } - - pub fn previous_state(&self) -> A::ActionType { - self.previous_state - } - - pub fn set(&mut self, state: A::ActionType) { - self.previous_state = std::mem::replace(&mut self.current_state, state); - } -} - -impl> ActionState { - pub fn pressed(&self) -> bool { - self.current_state - } - - pub fn just_pressed(&self) -> bool { - !self.previous_state && self.current_state - } - - pub fn just_released(&self) -> bool { - self.previous_state && !self.current_state - } - - pub fn press(&mut self) { - self.current_state = true - } -} diff --git a/crates/bevy_xr/src/lib.rs b/crates/bevy_xr/src/lib.rs index e15bd0b..5299ce5 100644 --- a/crates/bevy_xr/src/lib.rs +++ b/crates/bevy_xr/src/lib.rs @@ -1,4 +1,3 @@ -pub mod actions; pub mod camera; #[cfg(feature = "gizmos")] pub mod hand_debug_gizmos; diff --git a/crates/bevy_xr_utils/examples/actions.rs b/crates/bevy_xr_utils/examples/actions.rs index c636849..4ebc734 100644 --- a/crates/bevy_xr_utils/examples/actions.rs +++ b/crates/bevy_xr_utils/examples/actions.rs @@ -2,9 +2,8 @@ use bevy::{math::vec3, prelude::*}; use bevy_mod_openxr::{add_xr_plugins, helper_traits::ToQuat, resources::OxrViews}; use bevy_mod_xr::session::XrTrackingRoot; -use bevy_xr_utils::xr_utils_actions::{ - ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystems, - XRUtilsActionsPlugin, XRUtilsBinding, +use bevy_xr_utils::actions::{ + ActionType, ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystems, XRUtilsActionsPlugin, XRUtilsBinding }; fn main() { @@ -73,7 +72,7 @@ fn create_action_entities(mut commands: Commands) { XRUtilsAction { action_name: "flight_input".into(), localized_name: "flight_input_localized".into(), - action_type: bevy_mod_xr::actions::ActionType::Vector, + action_type: ActionType::Vector, }, FlightActionMarker, //lets try a marker component )) diff --git a/crates/bevy_xr_utils/src/xr_utils_actions.rs b/crates/bevy_xr_utils/src/actions.rs similarity index 98% rename from crates/bevy_xr_utils/src/xr_utils_actions.rs rename to crates/bevy_xr_utils/src/actions.rs index 000de06..cdefb49 100644 --- a/crates/bevy_xr_utils/src/xr_utils_actions.rs +++ b/crates/bevy_xr_utils/src/actions.rs @@ -138,7 +138,7 @@ fn create_openxr_events( let (create_action, bindings) = actions_query.get(child).unwrap(); //lets create dat action match create_action.action_type { - bevy_mod_xr::actions::ActionType::Bool => { + ActionType::Bool => { let action: openxr::Action = action_set .create_action::( &create_action.action_name, @@ -176,7 +176,7 @@ fn create_openxr_events( binding_writer.write(sugestion); } } - bevy_mod_xr::actions::ActionType::Float => { + ActionType::Float => { let action: openxr::Action = action_set .create_action::( &create_action.action_name, @@ -215,7 +215,7 @@ fn create_openxr_events( binding_writer.write(sugestion); } } - bevy_mod_xr::actions::ActionType::Vector => { + ActionType::Vector => { let action: openxr::Action = action_set .create_action::( &create_action.action_name, @@ -345,6 +345,13 @@ fn sync_and_update_action_states_vector( } } +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)] +pub enum ActionType { + Bool, + Float, + Vector, +} + #[derive(Debug, Hash, PartialEq, Eq, Clone, Copy, SystemSet)] pub enum XRUtilsActionSystems { /// Runs in Startup @@ -375,7 +382,7 @@ pub struct ActiveSet; pub struct XRUtilsAction { pub action_name: Cow<'static, str>, pub localized_name: Cow<'static, str>, - pub action_type: bevy_mod_xr::actions::ActionType, + pub action_type: ActionType, } #[derive(Component)] diff --git a/crates/bevy_xr_utils/src/lib.rs b/crates/bevy_xr_utils/src/lib.rs index 38574bd..aac219c 100644 --- a/crates/bevy_xr_utils/src/lib.rs +++ b/crates/bevy_xr_utils/src/lib.rs @@ -3,7 +3,7 @@ pub mod tracking_utils; #[cfg(not(target_family = "wasm"))] pub mod transform_utils; #[cfg(not(target_family = "wasm"))] -pub mod xr_utils_actions; +pub mod actions; pub mod generic_tracker; #[cfg(not(target_family = "wasm"))] pub mod mndx_xdev_spaces_trackers;