aboutsummaryrefslogtreecommitdiff
path: root/src/systems.rs
blob: b95b14f49af83bbf5c162cc4113f8f6c523ffc52 (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
31
32
33
use bevy::{
    prelude::*,
    tasks::{block_on, futures_lite::future},
};

use crate::resources::DirworldTasks;

pub fn remove_completed_tasks(mut commands: Commands, mut tasks: ResMut<DirworldTasks>) {
    tasks.retain(|_, task| match task {
        Some(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()
        }
        None => true,
    });
}

// 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;
//             }
//         }
//     }
// }