diff --git a/examples/xr.rs b/examples/xr.rs index 8b52c8d..1514de8 100644 --- a/examples/xr.rs +++ b/examples/xr.rs @@ -9,9 +9,10 @@ use bevy_openxr::input::XrInput; use bevy_openxr::resources::{XrFrameState, XrInstance, XrSession, XrViews}; use bevy_openxr::xr_input::debug_gizmos::OpenXrDebugRenderer; use bevy_openxr::xr_input::oculus_touch::OculusController; +use bevy_openxr::xr_input::prototype_locomotion::{proto_locomotion, PrototypeLocomotionConfig}; use bevy_openxr::xr_input::trackers::{ OpenXRController, OpenXRLeftController, OpenXRRightController, OpenXRTracker, - OpenXRTrackingRoot, + OpenXRTrackingRoot, adopt_open_xr_trackers, }; use bevy_openxr::xr_input::{Hand, QuatConv, Vec3Conv}; use bevy_openxr::DefaultXrPlugins; @@ -27,9 +28,10 @@ fn main() { .add_plugins(FrameTimeDiagnosticsPlugin) .add_systems(Startup, setup) .add_systems(Update, proto_locomotion) - .add_systems(Startup, spawn_controllers) - .add_systems(Update, update_hands) + .add_systems(Startup, spawn_controllers_example) + .add_systems(Update, update_open_xr_controllers) .add_systems(Update, adopt_open_xr_trackers) + .insert_resource(PrototypeLocomotionConfig::default()) .run(); } @@ -74,61 +76,38 @@ fn setup( transform: Transform::from_xyz(-2.0, 2.5, 5.0).looking_at(Vec3::ZERO, Vec3::Y), ..default() },)); - - commands.insert_resource(RotationTimer { - timer: Timer::from_seconds(1.0, TimerMode::Once), - }) } -pub enum LocomotionType { - Head, - Hand, -} - -pub enum RotationType { - Smooth, - Snap, -} - -#[derive(Resource)] -struct RotationTimer { - timer: Timer, -} - -fn spawn_controllers( - mut commands: Commands, - mut meshes: ResMut>, - mut materials: ResMut>, -) { +fn spawn_controllers_example(mut commands: Commands) { //left hand commands.spawn(( OpenXRLeftController, OpenXRController, OpenXRTracker, - // SpatialBundle::default(), - PbrBundle { - mesh: meshes.add(Mesh::from(shape::Cube { size: 0.1 })), - material: materials.add(Color::RED.into()), - transform: Transform::from_xyz(0.0, 0.5, 1.0), - ..default() - }, + SpatialBundle::default(), + // PbrBundle { + // mesh: meshes.add(Mesh::from(shape::Cube { size: 0.1 })), + // material: materials.add(Color::RED.into()), + // transform: Transform::from_xyz(0.0, 0.5, 1.0), + // ..default() + // }, )); //right hand commands.spawn(( OpenXRRightController, OpenXRController, OpenXRTracker, - // SpatialBundle::default(), - PbrBundle { - mesh: meshes.add(Mesh::from(shape::Cube { size: 0.1 })), - material: materials.add(Color::BLUE.into()), - transform: Transform::from_xyz(0.0, 0.5, 1.0), - ..default() - }, + SpatialBundle::default(), + // PbrBundle { + // mesh: meshes.add(Mesh::from(shape::Cube { size: 0.1 })), + // material: materials.add(Color::BLUE.into()), + // transform: Transform::from_xyz(0.0, 0.5, 1.0), + // ..default() + // }, )); } -fn update_hands( +fn update_open_xr_controllers( oculus_controller: Res, mut left_controller_query: Query<( &mut Transform, @@ -174,152 +153,4 @@ fn update_hands( right.0.pose.orientation.to_quat(); } -fn adopt_open_xr_trackers( - query: Query<(Entity), Added>, - mut commands: Commands, - tracking_root_query: Query<(Entity, With)>, -) { - let root = tracking_root_query.get_single(); - match root { - Ok(thing) => { - // info!("root is"); - for tracker in query.iter() { - info!("we got a new tracker"); - commands.entity(thing.0).add_child(tracker); - } - } - Err(_) => info!("root isnt spawned yet?"), - } -} -fn proto_locomotion( - time: Res