diff --git a/examples/xr.rs b/examples/xr.rs index 230103b..887eb1d 100644 --- a/examples/xr.rs +++ b/examples/xr.rs @@ -81,18 +81,17 @@ fn hands( frame_state: Res, xr_input: Res, ) { - let frame_state = *frame_state.lock().unwrap(); + let mut func = || -> anyhow::Result<()> { + let frame_state = *frame_state.lock().unwrap(); let right_controller = oculus_controller .grip_space .right - .relate(&**&xr_input.stage, frame_state.predicted_display_time) - .unwrap(); + .relate(&**&xr_input.stage, frame_state.predicted_display_time)?; let left_controller = oculus_controller .grip_space .left - .relate(&**&xr_input.stage, frame_state.predicted_display_time) - .unwrap(); + .relate(&**&xr_input.stage, frame_state.predicted_display_time)?; gizmos.rect( right_controller.0.pose.position.to_vec3(), right_controller.0.pose.orientation.to_quat(), @@ -105,4 +104,8 @@ fn hands( Vec2::new(0.05, 0.2), Color::YELLOW_GREEN, ); + Ok(()) + }; + + let _ = func(); } diff --git a/src/lib.rs b/src/lib.rs index 38b0495..82bb524 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -322,12 +322,18 @@ pub fn locate_views( xr_frame_state: Res, ) { let _span = info_span!("xr_locate_views").entered(); - *views.lock().unwrap() = session + *views.lock().unwrap() = match session .locate_views( VIEW_TYPE, xr_frame_state.lock().unwrap().predicted_display_time, &input.stage, ) - .unwrap() + { + Ok(this) => this, + Err(err) => { + warn!("error: {}", err); + return; + } + } .1; } diff --git a/src/resources.rs b/src/resources.rs index e7913b6..acf9ea4 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -134,6 +134,10 @@ impl SwapchainInner { }, }; let swapchain = self.handle.lock().unwrap(); + if views.len() == 0 { + warn!("views are len of 0"); + return Ok(()) + } self.stream.lock().unwrap().end( predicted_display_time, environment_blend_mode, diff --git a/src/xr_input/mod.rs b/src/xr_input/mod.rs index 244cffe..8dd16e7 100644 --- a/src/xr_input/mod.rs +++ b/src/xr_input/mod.rs @@ -59,7 +59,7 @@ fn action_set_system(action_sets: Res, session: Res) { for i in &action_sets.0 { active_action_sets.push(openxr::ActiveActionSet::new(i)); } - info!("action sets: {:#?}", action_sets.0.len()); + //info!("action sets: {:#?}", action_sets.0.len()); match session.sync_actions(&active_action_sets) { Err(err) => { warn!("{}", err);