diff --git a/crates/bevy_openxr/examples/raw_actions.rs b/crates/bevy_openxr/examples/raw_actions.rs index 6673771..72e7d76 100644 --- a/crates/bevy_openxr/examples/raw_actions.rs +++ b/crates/bevy_openxr/examples/raw_actions.rs @@ -2,17 +2,11 @@ use std::ops::Deref; use bevy::prelude::*; use bevy_mod_openxr::{ - action_binding::{OxrSendActionBindings, OxrSuggestActionBinding}, - action_set_attaching::OxrAttachActionSet, - action_set_syncing::{OxrActionSetSyncSet, OxrSyncActionSet}, - add_xr_plugins, - resources::OxrInstance, - session::OxrSession, - spaces::OxrSpaceExt, + action_binding::{OxrSendActionBindings, OxrSuggestActionBinding}, action_set_attaching::OxrAttachActionSet, action_set_syncing::{OxrActionSetSyncSet, OxrSyncActionSet}, add_xr_plugins, openxr_session_running, resources::OxrInstance, session::OxrSession, spaces::OxrSpaceExt }; use bevy_mod_xr::{ session::{session_available, session_running, XrSessionCreated}, - spaces::XrSpace, + spaces::{XrSpace, XrSpaceLocationFlags}, }; use openxr::Posef; @@ -25,7 +19,7 @@ fn main() { PreUpdate, sync_actions .before(OxrActionSetSyncSet) - .run_if(session_running), + .run_if(openxr_session_running), ); app.add_systems(OxrSendActionBindings, suggest_action_bindings); app.add_systems(Startup, create_actions.run_if(session_available)); @@ -131,12 +125,16 @@ fn spawn_hands( Mesh3d(meshes.add(Cuboid::new(0.1, 0.1, 0.05))), MeshMaterial3d(materials.add(Color::srgb_u8(124, 144, 255))), left_space, + // runtime required components are not inserted for non runrime required components, should + // be fixed in the final bevy 0.15 release + XrSpaceLocationFlags::default(), Controller, )); cmds.spawn(( Mesh3d(meshes.add(Cuboid::new(0.1, 0.1, 0.05))), MeshMaterial3d(materials.add(Color::srgb_u8(124, 144, 255))), right_space, + XrSpaceLocationFlags::default(), Controller, )); } diff --git a/crates/bevy_openxr/examples/sessions.rs b/crates/bevy_openxr/examples/sessions.rs index 27e718c..20d7b3b 100644 --- a/crates/bevy_openxr/examples/sessions.rs +++ b/crates/bevy_openxr/examples/sessions.rs @@ -1,12 +1,19 @@ //! A simple 3D scene with light shining over a cube sitting on a plane. use bevy::prelude::*; -use bevy_mod_openxr::add_xr_plugins; +use bevy_mod_openxr::{add_xr_plugins, init::OxrInitPlugin}; use bevy_mod_xr::session::{XrSessionPlugin, XrState}; fn main() { App::new() - .add_plugins(add_xr_plugins(DefaultPlugins).set(XrSessionPlugin { auto_handle: true })) + .add_plugins( + add_xr_plugins(DefaultPlugins) + .set(XrSessionPlugin { auto_handle: true }) + .set(OxrInitPlugin { + blend_modes: Some(vec![openxr::EnvironmentBlendMode::OPAQUE]), + ..Default::default() + }), + ) .add_plugins(bevy_xr_utils::hand_gizmos::HandGizmosPlugin) .add_systems(Startup, setup) .add_systems(Update, handle_input) diff --git a/crates/bevy_openxr/src/openxr/action_set_syncing.rs b/crates/bevy_openxr/src/openxr/action_set_syncing.rs index 05f6093..36d3346 100644 --- a/crates/bevy_openxr/src/openxr/action_set_syncing.rs +++ b/crates/bevy_openxr/src/openxr/action_set_syncing.rs @@ -22,7 +22,6 @@ fn sync_sets(session: Res, mut events: EventReader .map(|v| &v.0) .map(openxr::ActiveActionSet::new) .collect::>(); - if sets.is_empty() { return; } diff --git a/crates/bevy_openxr/src/openxr/exts.rs b/crates/bevy_openxr/src/openxr/exts.rs index 26e87ec..dc96399 100644 --- a/crates/bevy_openxr/src/openxr/exts.rs +++ b/crates/bevy_openxr/src/openxr/exts.rs @@ -29,6 +29,10 @@ impl OxrExtensions { self.0.ext_hand_tracking = false; self } + pub fn enable_extx_overlay(&mut self) -> &mut Self { + self.0.extx_overlay = true; + self + } /// returns true if all of the extensions enabled are also available in `available_exts` pub fn is_available(&self, available_exts: &OxrExtensions) -> bool { self.clone() & available_exts.clone() == *self