From 4074d4be7ccf3431c576851562c52bea07dca3af Mon Sep 17 00:00:00 2001 From: Schmarni Date: Fri, 2 May 2025 14:58:54 +0200 Subject: [PATCH] refactor: move OxrSpaceSyncSet into bevy_mod_xr and put locate_hands in the new XrSpaceSyncSet Signed-off-by: Schmarni --- .../bevy_openxr/src/openxr/features/handtracking.rs | 11 ++++++++--- crates/bevy_openxr/src/openxr/spaces.rs | 8 ++------ crates/bevy_xr/src/spaces.rs | 3 +++ crates/bevy_xr_utils/src/tracking_utils.rs | 10 +++++----- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/crates/bevy_openxr/src/openxr/features/handtracking.rs b/crates/bevy_openxr/src/openxr/features/handtracking.rs index 4ab4a00..ece5aba 100644 --- a/crates/bevy_openxr/src/openxr/features/handtracking.rs +++ b/crates/bevy_openxr/src/openxr/features/handtracking.rs @@ -6,8 +6,8 @@ use bevy_mod_xr::hands::{ use bevy_mod_xr::hands::{LeftHand, RightHand, XrHandBoneEntities}; use bevy_mod_xr::session::{XrPreDestroySession, XrSessionCreated}; use bevy_mod_xr::spaces::{ - XrPrimaryReferenceSpace, XrReferenceSpace, XrSpaceLocationFlags, XrSpaceVelocityFlags, - XrVelocity, + XrPrimaryReferenceSpace, XrReferenceSpace, XrSpaceLocationFlags, XrSpaceSyncSet, + XrSpaceVelocityFlags, XrVelocity, }; use openxr::{SpaceLocationFlags, SpaceVelocityFlags}; @@ -31,7 +31,12 @@ impl Default for HandTrackingPlugin { impl Plugin for HandTrackingPlugin { fn build(&self, app: &mut App) { - app.add_systems(PreUpdate, locate_hands.run_if(openxr_session_running)); + app.add_systems( + PreUpdate, + locate_hands + .in_set(XrSpaceSyncSet) + .run_if(openxr_session_running), + ); if self.default_hands { app.add_systems(XrPreDestroySession, clean_up_default_hands) .add_systems(XrSessionCreated, spawn_default_hands); diff --git a/crates/bevy_openxr/src/openxr/spaces.rs b/crates/bevy_openxr/src/openxr/spaces.rs index 870af19..d73d188 100644 --- a/crates/bevy_openxr/src/openxr/spaces.rs +++ b/crates/bevy_openxr/src/openxr/spaces.rs @@ -4,8 +4,7 @@ use bevy::{platform::collections::hash_set::HashSet, prelude::*}; use bevy_mod_xr::{ session::{XrFirst, XrHandleEvents}, spaces::{ - XrDestroySpace, XrPrimaryReferenceSpace, XrReferenceSpace, XrSpace, XrSpaceLocationFlags, - XrSpaceVelocityFlags, XrVelocity, + XrDestroySpace, XrPrimaryReferenceSpace, XrReferenceSpace, XrSpace, XrSpaceLocationFlags, XrSpaceSyncSet, XrSpaceVelocityFlags, XrVelocity }, }; use openxr::{ @@ -20,9 +19,6 @@ use crate::{ session::OxrSession, }; -#[derive(SystemSet, Hash, Debug, Clone, Copy, PartialEq, Eq)] -pub struct OxrSpaceSyncSet; - /// VERY IMPORTANT!! only disable when you know what you are doing pub struct OxrSpacePatchingPlugin; impl Plugin for OxrSpacePatchingPlugin { @@ -47,7 +43,7 @@ impl Plugin for OxrSpatialPlugin { .add_systems( PreUpdate, update_space_transforms - .in_set(OxrSpaceSyncSet) + .in_set(XrSpaceSyncSet) .run_if(openxr_session_running), ) .register_required_components::() diff --git a/crates/bevy_xr/src/spaces.rs b/crates/bevy_xr/src/spaces.rs index 5e1e4f0..d3e1733 100644 --- a/crates/bevy_xr/src/spaces.rs +++ b/crates/bevy_xr/src/spaces.rs @@ -5,6 +5,9 @@ use bevy::{ use crate::session::XrTracker; +#[derive(SystemSet, Hash, Debug, Clone, Copy, PartialEq, Eq)] +pub struct XrSpaceSyncSet; + /// Any Spaces will be invalid after the owning session exits #[repr(transparent)] #[derive(Component, Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, ExtractComponent)] diff --git a/crates/bevy_xr_utils/src/tracking_utils.rs b/crates/bevy_xr_utils/src/tracking_utils.rs index 53a4b6e..7ef9767 100644 --- a/crates/bevy_xr_utils/src/tracking_utils.rs +++ b/crates/bevy_xr_utils/src/tracking_utils.rs @@ -7,11 +7,11 @@ use bevy_mod_openxr::{ openxr_session_available, openxr_session_running, resources::{OxrFrameState, OxrInstance, Pipelined}, session::OxrSession, - spaces::{OxrSpaceLocationFlags, OxrSpaceSyncSet}, + spaces::OxrSpaceLocationFlags, }; use bevy_mod_xr::{ session::{XrSessionCreated, XrTracker, XrTrackingRoot}, - spaces::{XrPrimaryReferenceSpace, XrReferenceSpace}, + spaces::{XrPrimaryReferenceSpace, XrReferenceSpace, XrSpaceSyncSet}, }; use openxr::Posef; @@ -47,7 +47,7 @@ impl Plugin for TrackingUtilitiesPlugin { app.add_systems( PreUpdate, update_head_transforms - .in_set(OxrSpaceSyncSet) + .in_set(XrSpaceSyncSet) .run_if(openxr_session_running), ); //external @@ -73,8 +73,8 @@ impl Plugin for TrackingUtilitiesPlugin { //create actions app.add_systems(Startup, create_actions.run_if(openxr_session_available)); - app.add_systems(PreUpdate, update_left_grip.after(OxrSpaceSyncSet)); - app.add_systems(PreUpdate, update_right_grip.after(OxrSpaceSyncSet)); + app.add_systems(PreUpdate, update_left_grip.after(XrSpaceSyncSet)); + app.add_systems(PreUpdate, update_right_grip.after(XrSpaceSyncSet)); } }