aboutsummaryrefslogtreecommitdiff
path: root/src/systems.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/systems.rs')
-rw-r--r--src/systems.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/systems.rs b/src/systems.rs
new file mode 100644
index 0000000..ac5f667
--- /dev/null
+++ b/src/systems.rs
@@ -0,0 +1,14 @@
+use bevy::{prelude::{Commands, ResMut}, 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| {
+ 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()
+ });
+}