Expand description
DCES
DCES is a library that provides a variant of the entity component system.
Features:
- Filter and sort entities for systems
- Define priorities (run order) for systems
The library is still WIP. API changes are possible.
Example
extern crate dces;
use dces::prelude::*;
struct Name { value: String }
struct PrintSystem;
impl System<VecEntityContainer> for PrintSystem {
fn run(&self, entities: &VecEntityContainer, ecm: &mut EntityComponentManager) {
for entity in &entities.inner {
if let Ok(comp) = ecm.borrow_component::<Name>(*entity) {
println!("{}", comp.value);
}
}
}
}
fn main() {
let mut world = World::<VecEntityContainer>::new();
world.create_entity().with(Name { value: String::from("DCES") }).build();
world.create_system(PrintSystem).build();
world.run();
}
Re-exports
pub use self::entity::Component;
pub use self::entity::ComponentBox;
pub use self::entity::Entity;
pub use self::entity::EntityBuilder;
pub use self::entity::EntityComponentManager;
pub use self::entity::EntityContainer;
pub use self::entity::VecEntityContainer;
pub use self::error::NotFound;
pub use self::system::EntitySystem;
pub use self::system::EntitySystemBuilder;
pub use self::system::EntitySystemManager;
pub use self::system::Priority;
pub use self::system::System;
pub use self::world::World;