fixed stuff for steamvr openxr to not crash
This commit is contained in:
@@ -81,18 +81,17 @@ fn hands(
|
||||
frame_state: Res<XrFrameState>,
|
||||
xr_input: Res<XrInput>,
|
||||
) {
|
||||
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();
|
||||
}
|
||||
|
||||
10
src/lib.rs
10
src/lib.rs
@@ -322,12 +322,18 @@ pub fn locate_views(
|
||||
xr_frame_state: Res<XrFrameState>,
|
||||
) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -134,6 +134,10 @@ impl<G: xr::Graphics> SwapchainInner<G> {
|
||||
},
|
||||
};
|
||||
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,
|
||||
|
||||
@@ -59,7 +59,7 @@ fn action_set_system(action_sets: Res<ActionSets>, session: Res<XrSession>) {
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user