aboutsummaryrefslogtreecommitdiff
path: root/src/systems.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/systems.rs')
-rw-r--r--src/systems.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/systems.rs b/src/systems.rs
index ac5f667..6c3bc71 100644
--- a/src/systems.rs
+++ b/src/systems.rs
@@ -1,6 +1,9 @@
-use bevy::{prelude::{Commands, ResMut}, tasks::{block_on, futures_lite::future}};
+use bevy::{
+ prelude::*,
+ tasks::{block_on, futures_lite::future},
+};
-use crate::resources::DirworldTasks;
+use crate::{components::DirworldEntity, payload::DirworldComponent, resources::DirworldTasks};
pub fn remove_completed_tasks(mut commands: Commands, mut tasks: ResMut<DirworldTasks>) {
tasks.retain(|_, task| {
@@ -12,3 +15,20 @@ pub fn remove_completed_tasks(mut commands: Commands, mut tasks: ResMut<Dirworld
!task.is_finished()
});
}
+
+pub fn sync_entity_transforms(
+ mut dirworld_entity_query: Query<(&mut DirworldEntity, Ref<Transform>, &GlobalTransform)>,
+) {
+ for (mut dirworld_entity, transform, global_transform) in dirworld_entity_query.iter_mut() {
+ if transform.is_changed() && !transform.is_added() {
+ if let Some(payload) = &mut dirworld_entity.payload {
+ if let Some(DirworldComponent::Transform(payload_transform)) =
+ payload.component_mut("Transform")
+ {
+ let transform = global_transform.compute_transform();
+ *payload_transform = transform;
+ }
+ }
+ }
+ }
+}