mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-18 07:35:19 +00:00
@@ -1,5 +1,7 @@
|
||||
use bevy::prelude::*;
|
||||
|
||||
use crate::scene::{SceneElement, SceneSpawnerSystem, SceneState};
|
||||
|
||||
pub struct ChangeTrackingPlugin;
|
||||
|
||||
impl Plugin for ChangeTrackingPlugin {
|
||||
@@ -8,6 +10,10 @@ impl Plugin for ChangeTrackingPlugin {
|
||||
|
||||
// Add more of these systems for each component that we want to track
|
||||
app.add_systems(Update, send_change_events::<Transform>);
|
||||
app.add_systems(
|
||||
OnEnter(SceneState::Active),
|
||||
track_scene_elements.after(SceneSpawnerSystem),
|
||||
);
|
||||
|
||||
#[cfg(feature = "wasm")]
|
||||
app.add_systems(
|
||||
@@ -29,6 +35,15 @@ fn send_change_events<T: Component>(
|
||||
}
|
||||
}
|
||||
|
||||
fn track_scene_elements(
|
||||
mut cmd: Commands,
|
||||
q_scene_elements: Query<Entity, (With<Transform>, With<SceneElement>, Without<ChangeTracker>)>,
|
||||
) {
|
||||
for element in q_scene_elements.iter() {
|
||||
cmd.entity(element).insert(ChangeTracker);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Event, Deref)]
|
||||
pub struct EntityChangedEvent(pub Entity);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user