fix status_changed_to, added OxrSuggestActionBindings event to app and fixed scheduling for run_action_binding_sugestion

Signed-off-by: Schmarni <marnistromer@gmail.com>
This commit is contained in:
Schmarni
2024-04-29 18:49:07 +02:00
parent aa0eaa60f4
commit 9cb237e88f
3 changed files with 5 additions and 3 deletions

View File

@@ -13,10 +13,11 @@ use crate::resources::OxrInstance;
impl Plugin for OxrActionBindingPlugin {
fn build(&self, app: &mut App) {
app.add_schedule(Schedule::new(OxrSendActionBindings));
app.add_event::<OxrSuggestActionBinding>();
app.add_systems(
Update,
run_action_binding_sugestion
.run_if(run_once().and_then(status_changed_to(XrStatus::Ready))),
.run_if(status_changed_to(XrStatus::Ready).and_then(run_once())),
);
}
}

View File

@@ -14,8 +14,9 @@ impl Plugin for OxrActionAttachingPlugin {
fn attach_sets(session: Res<OxrSession>, mut events: EventReader<OxrAttachActionSet>) {
let sets = events.read().map(|v| &v.0).collect::<Vec<_>>();
info!("attaching {} sessions", sets.len());
match session.attach_action_sets(&sets) {
Ok(_) => {}
Ok(_) => {info!("attached sessions!")}
Err(openxr::sys::Result::ERROR_ACTIONSETS_ALREADY_ATTACHED) => {
error!("Action Sets Already attached!");
}

View File

@@ -91,7 +91,7 @@ pub fn handle_session(
/// A [`Condition`](bevy::ecs::schedule::Condition) that allows the system to run when the xr status changed to a specific [`XrStatus`].
pub fn status_changed_to(status: XrStatus) -> impl FnMut(EventReader<XrStatusChanged>) -> bool + Clone {
move |mut reader: EventReader<XrStatusChanged>| {
reader.read().count() > 0 && reader.read().any(|new_status| new_status.0 == status)
reader.read().any(|new_status| new_status.0 == status)
}
}