use bevy::{ prelude::*, tasks::{block_on, futures_lite::future}, }; use crate::resources::DirworldTasks; pub fn remove_completed_tasks(mut commands: Commands, mut tasks: ResMut) { 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, }); }