Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixed controllers #54

Merged
merged 10 commits into from
Dec 9, 2023
7 changes: 1 addition & 6 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ impl Plugin for OpenXrPlugin {
RenderInstance(Arc::new(instance)),
),
});
app.insert_resource(XrEnableStatus::Enabled);
} else {
app.add_plugins(RenderPlugin::default());
app.insert_resource(XrEnableStatus::Disabled);
Expand All @@ -155,12 +156,6 @@ impl Plugin for OpenXrPlugin {
fn finish(&self, app: &mut App) {
// TODO: Split this up into the indevidual resources
if let Some(data) = app.world.get_resource::<XrRenderData>().cloned() {
// just calling this stuff because I already had the code, so...
app.insert_resource(XrEnableStatus::Enabled);
app.world.send_event(XrEnableRequest::TryEnable);
app.world.run_system_once(update_xr_stuff);
app.insert_resource(XrEnableStatus::Enabled);
//
let hands = data.xr_instance.exts().ext_hand_tracking.is_some()
&& data
.xr_instance
Expand Down
20 changes: 15 additions & 5 deletions src/xr_init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ impl Plugin for RenderRestartPlugin {
.insert_resource(ForceMain)
.add_event::<XrEnableRequest>()
.add_event::<XrEnableStatus>()
.add_systems(PreStartup, xr_presetup.run_if(xr_only()))
.add_systems(Startup, xr_setup.run_if(xr_only()))
.add_systems(PostStartup, xr_postsetup.run_if(xr_only()))
.add_systems(
PostUpdate,
update_xr_stuff.run_if(on_event::<XrEnableRequest>()),
Expand All @@ -119,7 +122,7 @@ impl Plugin for RenderRestartPlugin {
cleanup_xr.run_if(resource_exists_and_equals(XrNextEnabledState::Disabled)),
// handle_xr_enable_requests,
apply_deferred,
setup_xr/* .run_if(resource_exists_and_equals(XrEnableStatus::Enabled)) */,
setup_xr, /* .run_if(resource_exists_and_equals(XrEnableStatus::Enabled)) */
)
.chain(),
)
Expand Down Expand Up @@ -151,15 +154,22 @@ fn add_schedules(app: &mut App) {
}
}

fn xr_presetup(world: &mut World) {
world.run_schedule(XrPreSetup);
}
fn xr_setup(world: &mut World) {
world.run_schedule(XrSetup);
}
fn xr_postsetup(world: &mut World) {
world.run_schedule(XrPrePostSetup);
world.run_schedule(XrPostSetup);
}

fn setup_xr(world: &mut World) {
world.run_schedule(XrPreSetup);
info!("PreSetup Done");
world.run_schedule(XrSetup);
info!("Setup Done");
world.run_schedule(XrPrePostSetup);
info!("PrePostSetup Done");
world.run_schedule(XrPostSetup);
info!("PostSetup Done");
}
fn cleanup_xr(world: &mut World) {
world.run_schedule(XrPreCleanup);
Expand Down
1 change: 0 additions & 1 deletion src/xr_input/actions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ impl Plugin for OpenXrActionsPlugin {
}

pub fn setup_oxr_actions(world: &mut World) {
info!("huh?!");
let actions = world.remove_resource::<SetupActionSets>().unwrap();
let instance = world.get_resource::<XrInstance>().unwrap();
let session = world.get_resource::<XrSession>().unwrap();
Expand Down
3 changes: 1 addition & 2 deletions src/xr_input/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ impl Plugin for OpenXrInput {
}
//adopt any new trackers
app.add_systems(PreUpdate, adopt_open_xr_trackers.run_if(xr_only()));
// app.add_systems(PreUpdate, action_set_system);
app.add_systems(PreUpdate, action_set_system);
app.add_systems(PreUpdate, xr_camera_head_sync.run_if(xr_only()).after(xr_begin_frame));
//update controller trackers
app.add_systems(Update, update_open_xr_controllers.run_if(xr_only()));
Expand All @@ -89,7 +89,6 @@ fn setup_binding_recommendations(
}

fn setup_xr_cameras(mut commands: Commands) {
info!("WTF?!");
//this needs to do the whole xr tracking volume not just cameras
//get the root?
let tracking_root = commands
Expand Down