#![doc = include_str!("../README.md")]
pub(crate) mod default;
pub(crate) mod ecs;
pub(crate) mod mock;
pub(crate) mod util;
pub type FxBuildHasher = fxhash::FxBuildHasher;
pub(crate) const MAX_GROUP: usize = 4;
pub mod prelude {
pub use super::global;
pub use super::log;
pub use super::{default::prelude::*, ecs::prelude::*};
pub use my_ecs_macros::{filter, request, Component, Entity, Resource};
pub use my_utils::{
ds::{
ATypeId, DebugHelper, NotClone, NotDebug, NotDefault, NotEqualType, NotSend, NotSync,
NotUnwindSafe, TypeHelper, TypeIdExt, TypeInfo,
},
tinfo, type_name, TakeRecur,
};
#[doc(no_inline)]
pub use rayon::prelude::*;
}
pub mod utils {
#[allow(unused_imports)]
pub use super::util::*;
pub use my_utils::*;
}
pub mod global {
pub use super::ecs::stat;
#[cfg(target_arch = "wasm32")]
pub use super::ecs::web::{set_panic_hook_once, web_panic_hook};
}
#[doc(hidden)]
pub use memoffset;
#[doc(hidden)]
pub use once_cell;
pub(crate) mod cb_deque {
#[cfg(not(miri))]
pub(crate) use crossbeam_deque::*;
#[cfg(miri)]
pub(crate) use super::mock::cb_deque::*;
}
#[cfg(test)]
mod my_ecs_macros_doc_tests {
#![allow(unused)]
use crate as my_ecs;
#[test]
fn test_my_ecs_macros_doc_derive_component() {
use my_ecs::prelude::*;
#[derive(Component)]
struct Ca;
#[derive(Component)]
struct Cb(u8);
#[derive(Component)]
struct Cc {
vel: (f32, f32, f32),
acc: (f32, f32, f32),
}
}
#[test]
fn test_my_ecs_macros_doc_derive_entity() {
use my_ecs::prelude::*;
#[derive(Component)]
struct Ca;
#[derive(Entity)]
struct Ea {
a: Ca,
}
#[derive(Entity)]
#[container(ChunkSparseSet)]
#[default_hasher(std::collections::hash_map::RandomState)]
struct Eb {
a: Ca,
}
}
#[test]
fn test_my_ecs_macros_doc_derive_resource() {
use my_ecs::prelude::*;
#[derive(Resource)]
struct R(i32);
}
#[test]
fn test_my_ecs_macros_doc_filter() {
use my_ecs::prelude::*;
#[derive(Component)]
struct Ca;
#[derive(Component)]
struct Cb;
#[derive(Component)]
struct Cc;
#[derive(Component)]
struct Cd;
#[derive(Component)]
struct Ce;
filter!(Fa, All = Ca);
filter!(Fb, All = Ca, Any = Cb, None = Cc);
filter!(Fc, Target = Ca);
filter!(Fd, Target = Ca, All = Cb, Any = Cc, None = (Cd, Ce));
fn system_a(ew: EntWrite<(Fa, Fb, Fc, Fd)>) {
}
fn system_b(r: Read<Fc>, w: Write<Fd>) {
}
}
#[test]
fn test_my_ecs_macros_doc_request() {
use my_ecs::prelude::*;
#[derive(Component)]
struct Ca;
#[derive(Component)]
struct Cb;
#[derive(Resource)]
struct Ra(i32);
#[derive(Resource)]
struct Rb(i32);
filter!(Fa, Target = Ca);
filter!(Fb, Target = Cb);
filter!(Fc, All = (Ca, Cb));
request!(
Req,
Read = Fa,
Write = Fb,
ResRead = Ra,
ResWrite = Rb,
EntWrite = Fc
);
struct Sys {
data: String,
}
impl System for Sys {
type Request = Req;
fn run(&mut self, resp: Response<'_, Self::Request>) {
}
}
}
}