diff --git a/src/lib.rs b/src/lib.rs index c93a7c3f..296c6d19 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -139,6 +139,7 @@ impl Plugin for OpenXrPlugin { RenderInstance(Arc::new(instance)), ), }); + app.insert_resource(XrEnableStatus::Enabled); } else { app.add_plugins(RenderPlugin::default()); app.insert_resource(XrEnableStatus::Disabled); @@ -155,12 +156,6 @@ impl Plugin for OpenXrPlugin { fn finish(&self, app: &mut App) { // TODO: Split this up into the indevidual resources if let Some(data) = app.world.get_resource::().cloned() { - // just calling this stuff because I already had the code, so... - app.insert_resource(XrEnableStatus::Enabled); - app.world.send_event(XrEnableRequest::TryEnable); - app.world.run_system_once(update_xr_stuff); - app.insert_resource(XrEnableStatus::Enabled); - // let hands = data.xr_instance.exts().ext_hand_tracking.is_some() && data .xr_instance diff --git a/src/xr_init.rs b/src/xr_init.rs index f9401448..777d777a 100644 --- a/src/xr_init.rs +++ b/src/xr_init.rs @@ -107,6 +107,9 @@ impl Plugin for RenderRestartPlugin { .insert_resource(ForceMain) .add_event::() .add_event::() + .add_systems(PreStartup, xr_presetup.run_if(xr_only())) + .add_systems(Startup, xr_setup.run_if(xr_only())) + .add_systems(PostStartup, xr_postsetup.run_if(xr_only())) .add_systems( PostUpdate, update_xr_stuff.run_if(on_event::()), @@ -119,7 +122,7 @@ impl Plugin for RenderRestartPlugin { cleanup_xr.run_if(resource_exists_and_equals(XrNextEnabledState::Disabled)), // handle_xr_enable_requests, apply_deferred, - setup_xr/* .run_if(resource_exists_and_equals(XrEnableStatus::Enabled)) */, + setup_xr, /* .run_if(resource_exists_and_equals(XrEnableStatus::Enabled)) */ ) .chain(), ) @@ -151,15 +154,22 @@ fn add_schedules(app: &mut App) { } } +fn xr_presetup(world: &mut World) { + world.run_schedule(XrPreSetup); +} +fn xr_setup(world: &mut World) { + world.run_schedule(XrSetup); +} +fn xr_postsetup(world: &mut World) { + world.run_schedule(XrPrePostSetup); + world.run_schedule(XrPostSetup); +} + fn setup_xr(world: &mut World) { world.run_schedule(XrPreSetup); - info!("PreSetup Done"); world.run_schedule(XrSetup); - info!("Setup Done"); world.run_schedule(XrPrePostSetup); - info!("PrePostSetup Done"); world.run_schedule(XrPostSetup); - info!("PostSetup Done"); } fn cleanup_xr(world: &mut World) { world.run_schedule(XrPreCleanup); diff --git a/src/xr_input/actions.rs b/src/xr_input/actions.rs index 94645ea2..827464a5 100644 --- a/src/xr_input/actions.rs +++ b/src/xr_input/actions.rs @@ -17,7 +17,6 @@ impl Plugin for OpenXrActionsPlugin { } pub fn setup_oxr_actions(world: &mut World) { - info!("huh?!"); let actions = world.remove_resource::().unwrap(); let instance = world.get_resource::().unwrap(); let session = world.get_resource::().unwrap(); diff --git a/src/xr_input/mod.rs b/src/xr_input/mod.rs index c233b5e9..e49f0453 100644 --- a/src/xr_input/mod.rs +++ b/src/xr_input/mod.rs @@ -63,7 +63,7 @@ impl Plugin for OpenXrInput { } //adopt any new trackers app.add_systems(PreUpdate, adopt_open_xr_trackers.run_if(xr_only())); - // app.add_systems(PreUpdate, action_set_system); + app.add_systems(PreUpdate, action_set_system); app.add_systems(PreUpdate, xr_camera_head_sync.run_if(xr_only()).after(xr_begin_frame)); //update controller trackers app.add_systems(Update, update_open_xr_controllers.run_if(xr_only())); @@ -89,7 +89,6 @@ fn setup_binding_recommendations( } fn setup_xr_cameras(mut commands: Commands) { - info!("WTF?!"); //this needs to do the whole xr tracking volume not just cameras //get the root? let tracking_root = commands