#![forbid(unsafe_op_in_unsafe_fn)]
#![warn(missing_docs)]
#![allow(clippy::module_inception)]
pub(crate) mod engine;
#[cfg(feature = "gpu")]
pub mod gpu;
pub(crate) mod profiling;
pub use engine::manager::{
BoundaryHandle, ECSManager, ECSReference, EntityQueryParam, QueryParam, Read, Write,
};
pub use engine::entity::{Entity, EntityLocation};
pub use engine::component::{Bundle, ComponentDesc, ComponentRegistry, DynamicBundle, Signature};
#[cfg(feature = "gpu")]
pub use engine::component::{register_gpu_component, GPUPod};
pub use engine::reduce::{Count, MinMax, Sum, Welford};
pub use engine::query::{BuiltQuery, QueryBuilder, QueryComponent, QuerySignature};
#[cfg(feature = "gpu")]
pub use engine::systems::GpuSystem;
pub use engine::systems::System;
pub use engine::systems::{AccessSets, FnSystem, SystemBackend};
pub use engine::systems::{ChannelOrder, ChannelSet};
pub use engine::scheduler::{Scheduler, Stage};
pub use engine::commands::Command;
pub use engine::commands::{BatchColumn, SpawnBatch};
pub use engine::error::{
AttributeError, ECSError, ECSResult, ExecutionError, MoveError, RegistryError, SpawnError,
};
pub use engine::error::BoundaryAccessFailure;
pub use engine::types::{
AgentTemplateId, ArchetypeID, ChunkID, ComponentID, EntityID, SystemID, CHUNK_CAP,
};
pub use engine::types::{BoundaryID, ChannelID};
#[cfg(feature = "gpu")]
pub use engine::types::{GPUAccessMode, GPUResourceID};
pub use engine::activation::{ActivationOrder, RunContext};
pub use engine::boundary::{BoundaryChannelProfile, BoundaryContext, BoundaryResource};
pub use engine::dot_export::DotExport;
pub use engine::plan_display::PlanDisplay;
pub use engine::random::DetRng;
pub use engine::workers::{max_workers, worker_id};
pub use profiling::profiler::{
flush_thread, init, next_arg, shutdown, span, span_fmt, thread_name, try_init, Arg,
ProfilingError, SpanGuard, SpanName,
};
pub mod advanced {
pub use crate::engine::archetype::{Archetype, ChunkBorrow};
pub use crate::engine::channel_allocator::ChannelAllocator;
pub use crate::engine::entity::EntityShards;
pub use crate::engine::manager::ECSData;
pub use crate::engine::storage::{cast_slice, cast_slice_mut, Attribute, TypeErasedAttribute};
pub use crate::engine::worker_stage::WorkerStage;
pub use crate::engine::workers::{max_workers, worker_id};
}
#[cfg(feature = "agents")]
pub mod agents;
#[cfg(feature = "environment")]
pub mod environment;
#[cfg(feature = "messaging")]
pub mod messaging;
#[cfg(feature = "model")]
pub mod model;
#[cfg(feature = "environment")]
pub mod space;
pub mod prelude {
pub use crate::{
BuiltQuery, ComponentRegistry, ECSManager, ECSReference, Entity, FnSystem, QueryBuilder,
QueryComponent, QuerySignature, RunContext, Signature, System, SystemBackend,
};
}