fixed stuff for steamvr openxr to not crash
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
10
src/lib.rs
10
src/lib.rs
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user