blob: 3f894ec8af4d0b5726fe1c73ae3ea73567248832 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use bevy::{
prelude::*,
tasks::{block_on, futures_lite::future},
};
use crate::{components::DirworldEntity, resources::DirworldTasks};
pub fn remove_completed_tasks(mut commands: Commands, mut tasks: ResMut<DirworldTasks>) {
tasks.retain(|_, task| {
if task.is_finished() {
if let Some(Some(mut command_queue)) = block_on(future::poll_once(&mut *task)) {
commands.append(&mut command_queue);
}
}
!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 {
let transform = global_transform.compute_transform();
*payload.transform = transform;
}
}
}
}
|