#![forbid(unsafe_code)]
#![warn(missing_debug_implementations)]
#![warn(missing_docs)]
#![doc = include_str!("../README.md")]
mod command;
mod entity;
mod resource;
mod system;
mod world;
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
use entity::wait_for_reflect_components;
use operation::AsyncOperation;
use resource::wait_for_reflect_resources;
use std::borrow::Cow;
use crate::operation::{apply_operations, receive_operations, WorldOperationQueue};
pub use entity::{AsyncComponent, AsyncEntity};
pub use resource::AsyncResource;
pub use system::{AsyncIOSystem, AsyncSystem};
pub use world::AsyncWorld;
pub mod operation;
type CowStr = Cow<'static, str>;
#[derive(Debug)]
pub struct AsyncEcsPlugin;
impl Plugin for AsyncEcsPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<WorldOperationQueue>()
.add_systems(
Last,
(receive_operations, apply_operations, apply_deferred).chain(),
)
.add_systems(
PostUpdate,
(wait_for_reflect_components, wait_for_reflect_resources),
);
}
}