diff --git a/src/lib.rs b/src/lib.rs index 49c8508..9a3fb3b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -120,7 +120,6 @@ impl Plugin for OpenXrPlugin { xr_wait_frame.run_if(xr_only()), // xr_begin_frame.run_if(xr_only()), locate_views.run_if(xr_only()), - apply_deferred, ) .chain() @@ -306,23 +305,27 @@ fn xr_begin_frame(swapchain: Res) { } pub fn xr_wait_frame( - mut frame_state: ResMut, - mut frame_waiter: ResMut, - mut should_render: ResMut, - mut waited: ResMut, + world: &mut World, + // mut frame_state: ResMut, + // mut frame_waiter: ResMut, + // mut should_render: ResMut, + // mut waited: ResMut, ) { + let mut frame_waiter = world.get_resource_mut::().unwrap(); { let _span = info_span!("xr_wait_frame").entered(); - *frame_state = match frame_waiter.wait() { + + *world.get_resource_mut::().unwrap() = match frame_waiter.wait() { Ok(a) => a.into(), Err(e) => { warn!("error: {}", e); return; } }; + let should_render = world.get_resource::().unwrap().should_render; // frame_state.predicted_display_time = xr::Time::from_nanos(frame_state.predicted_display_time.as_nanos() + frame_state.predicted_display_period.as_nanos()); - **should_render = frame_state.should_render; - **waited = true; + **world.get_resource_mut::().unwrap() = should_render; + **world.get_resource_mut::().unwrap() = true; } } diff --git a/src/xr_input/hands/mod.rs b/src/xr_input/hands/mod.rs index 8ab17d8..ea7a230 100644 --- a/src/xr_input/hands/mod.rs +++ b/src/xr_input/hands/mod.rs @@ -55,6 +55,7 @@ fn check_for_handtracking( .supports_hand_tracking(instance.system(FormFactor::HEAD_MOUNTED_DISPLAY).unwrap()) .is_ok_and(|v| v); if hands { + info!("handtracking!"); commands.insert_resource(HandTrackingData::new(&session).unwrap()); } else { commands.insert_resource(DisableHandTracking::Both);