From 4d36ddf9c4aca7fef8ec494bbf88874c605a0d92 Mon Sep 17 00:00:00 2001 From: MalekiRe Date: Mon, 11 Sep 2023 18:54:00 -0700 Subject: [PATCH] fixed up example to be clean, and added head space to xr input --- examples/xr.rs | 38 +++++++++----------------------------- src/input.rs | 5 +++++ 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/examples/xr.rs b/examples/xr.rs index 086c4cc..4bd9c58 100644 --- a/examples/xr.rs +++ b/examples/xr.rs @@ -1,32 +1,12 @@ -use bevy::core_pipeline::core_3d; -use bevy::core_pipeline::tonemapping::{DebandDither, Tonemapping}; -use bevy::diagnostic::{LogDiagnosticsPlugin, FrameTimeDiagnosticsPlugin}; -use bevy::ecs::prelude::{Bundle, Component, ReflectComponent}; - -use bevy::math::Mat4; -use bevy::prelude::Camera3d; -use bevy::reflect::{std_traits::ReflectDefault, Reflect}; -use bevy::render::view::ColorGrading; -use bevy::render::{ - camera::{Camera, CameraProjection, CameraRenderGraph}, - primitives::Frustum, - view::VisibleEntities, -}; -use bevy::transform::components::{GlobalTransform, Transform}; -// mostly copied from https://github.com/blaind/bevy_openxr/tree/main/crates/bevy_openxr/src/render_graph/camera -use openxr::Fovf; - -use bevy::render::camera::CameraProjectionPlugin; -use bevy::render::view::{update_frusta, VisibilitySystems}; -use bevy::transform::TransformSystem; -use bevy::{prelude::*, render::camera::RenderTarget}; +use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; +use bevy::prelude::*; +use bevy::transform::components::Transform; use bevy_openxr::input::XrInput; -use bevy_openxr::resources::{XrFrameState, XrSession, XrViews}; +use bevy_openxr::resources::XrFrameState; use bevy_openxr::xr_input::controllers::XrControllerType; use bevy_openxr::xr_input::oculus_touch::OculusController; use bevy_openxr::xr_input::{OpenXrInput, QuatConv, Vec3Conv}; -use bevy_openxr::{DefaultXrPlugins, LEFT_XR_TEXTURE_HANDLE, RIGHT_XR_TEXTURE_HANDLE}; -use openxr::ActiveActionSet; +use bevy_openxr::DefaultXrPlugins; fn main() { color_eyre::install().unwrap(); @@ -36,7 +16,7 @@ fn main() { .add_plugins(DefaultXrPlugins) .add_plugins(OpenXrInput::new(XrControllerType::OculusTouch)) .add_plugins(LogDiagnosticsPlugin::default()) - .add_plugins(FrameTimeDiagnosticsPlugin::default()) + .add_plugins(FrameTimeDiagnosticsPlugin) .add_systems(Startup, setup) .add_systems(Update, hands) .run(); @@ -84,17 +64,17 @@ fn hands( frame_state: Res, xr_input: Res, ) { - let mut func = || -> anyhow::Result<()> { + let mut func = || -> color_eyre::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)?; + .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)?; + .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(), diff --git a/src/input.rs b/src/input.rs index 54f43bb..e6e7750 100644 --- a/src/input.rs +++ b/src/input.rs @@ -12,6 +12,7 @@ pub struct XrInput { //pub right_space: Arc, //pub left_space: Arc, pub stage: Arc, + pub head: Arc, } impl XrInput { @@ -52,6 +53,9 @@ impl XrInput { // )?; let stage = session.create_reference_space(xr::ReferenceSpaceType::STAGE, xr::Posef::IDENTITY)?; + let head = + session.create_reference_space(xr::ReferenceSpaceType::VIEW, xr::Posef::IDENTITY) + .unwrap(); //session.attach_action_sets(&[&action_set])?; //session.attach_action_sets(&[])?; Ok(Self { @@ -60,6 +64,7 @@ impl XrInput { // right_space: Arc::new(right_space), // left_space: Arc::new(left_space), stage: Arc::new(stage), + head: Arc::new(head), }) } }