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:
@@ -13,10 +13,11 @@ use crate::resources::OxrInstance;
|
|||||||
impl Plugin for OxrActionBindingPlugin {
|
impl Plugin for OxrActionBindingPlugin {
|
||||||
fn build(&self, app: &mut App) {
|
fn build(&self, app: &mut App) {
|
||||||
app.add_schedule(Schedule::new(OxrSendActionBindings));
|
app.add_schedule(Schedule::new(OxrSendActionBindings));
|
||||||
|
app.add_event::<OxrSuggestActionBinding>();
|
||||||
app.add_systems(
|
app.add_systems(
|
||||||
Update,
|
Update,
|
||||||
run_action_binding_sugestion
|
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())),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ impl Plugin for OxrActionAttachingPlugin {
|
|||||||
|
|
||||||
fn attach_sets(session: Res<OxrSession>, mut events: EventReader<OxrAttachActionSet>) {
|
fn attach_sets(session: Res<OxrSession>, mut events: EventReader<OxrAttachActionSet>) {
|
||||||
let sets = events.read().map(|v| &v.0).collect::<Vec<_>>();
|
let sets = events.read().map(|v| &v.0).collect::<Vec<_>>();
|
||||||
|
info!("attaching {} sessions", sets.len());
|
||||||
match session.attach_action_sets(&sets) {
|
match session.attach_action_sets(&sets) {
|
||||||
Ok(_) => {}
|
Ok(_) => {info!("attached sessions!")}
|
||||||
Err(openxr::sys::Result::ERROR_ACTIONSETS_ALREADY_ATTACHED) => {
|
Err(openxr::sys::Result::ERROR_ACTIONSETS_ALREADY_ATTACHED) => {
|
||||||
error!("Action Sets Already attached!");
|
error!("Action Sets Already attached!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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`].
|
/// 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 {
|
pub fn status_changed_to(status: XrStatus) -> impl FnMut(EventReader<XrStatusChanged>) -> bool + Clone {
|
||||||
move |mut reader: EventReader<XrStatusChanged>| {
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user