fixed stuff for steamvr openxr to not crash

This commit is contained in:
MalekiRe
2023-09-09 21:43:06 -07:00
parent 6d60b55b02
commit aca80bade3
4 changed files with 21 additions and 8 deletions

View File

@@ -81,18 +81,17 @@ fn hands(
frame_state: Res<XrFrameState>, frame_state: Res<XrFrameState>,
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
) { ) {
let mut func = || -> anyhow::Result<()> {
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
let right_controller = oculus_controller let right_controller = oculus_controller
.grip_space .grip_space
.right .right
.relate(&**&xr_input.stage, frame_state.predicted_display_time) .relate(&**&xr_input.stage, frame_state.predicted_display_time)?;
.unwrap();
let left_controller = oculus_controller let left_controller = oculus_controller
.grip_space .grip_space
.left .left
.relate(&**&xr_input.stage, frame_state.predicted_display_time) .relate(&**&xr_input.stage, frame_state.predicted_display_time)?;
.unwrap();
gizmos.rect( gizmos.rect(
right_controller.0.pose.position.to_vec3(), right_controller.0.pose.position.to_vec3(),
right_controller.0.pose.orientation.to_quat(), right_controller.0.pose.orientation.to_quat(),
@@ -105,4 +104,8 @@ fn hands(
Vec2::new(0.05, 0.2), Vec2::new(0.05, 0.2),
Color::YELLOW_GREEN, Color::YELLOW_GREEN,
); );
Ok(())
};
let _ = func();
} }

View File

@@ -322,12 +322,18 @@ pub fn locate_views(
xr_frame_state: Res<XrFrameState>, xr_frame_state: Res<XrFrameState>,
) { ) {
let _span = info_span!("xr_locate_views").entered(); let _span = info_span!("xr_locate_views").entered();
*views.lock().unwrap() = session *views.lock().unwrap() = match session
.locate_views( .locate_views(
VIEW_TYPE, VIEW_TYPE,
xr_frame_state.lock().unwrap().predicted_display_time, xr_frame_state.lock().unwrap().predicted_display_time,
&input.stage, &input.stage,
) )
.unwrap() {
Ok(this) => this,
Err(err) => {
warn!("error: {}", err);
return;
}
}
.1; .1;
} }

View File

@@ -134,6 +134,10 @@ impl<G: xr::Graphics> SwapchainInner<G> {
}, },
}; };
let swapchain = self.handle.lock().unwrap(); let swapchain = self.handle.lock().unwrap();
if views.len() == 0 {
warn!("views are len of 0");
return Ok(())
}
self.stream.lock().unwrap().end( self.stream.lock().unwrap().end(
predicted_display_time, predicted_display_time,
environment_blend_mode, environment_blend_mode,

View File

@@ -59,7 +59,7 @@ fn action_set_system(action_sets: Res<ActionSets>, session: Res<XrSession>) {
for i in &action_sets.0 { for i in &action_sets.0 {
active_action_sets.push(openxr::ActiveActionSet::new(i)); 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) { match session.sync_actions(&active_action_sets) {
Err(err) => { Err(err) => {
warn!("{}", err); warn!("{}", err);