diff options
Diffstat (limited to 'src/systems.rs')
-rw-r--r-- | src/systems.rs | 24 |
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; + } + } + } + } +} |