The full ECS (Entity-Component-System) library.
Support an Open Source Developer!
Composed of two smaller libraries:
- world_dispatcher: the
System
part of the ECS. - entity_component: the
Entity-Component
part of the ECS.
Read the documentation.
Why would you use this ECS library?
- Compatible with all platforms, including WASM!
- Fast enough on every operation, not just iteration.
- Public domain licensing: CC0
- Minimal amount of dependencies.
- Small code size.
- Stable, tested, benchmarked, 100% completed.
- Ability to handle system errors instead of crashing.
- Convert both functions and closures into systems!
- Safe: only 3
unsafe
in total. (compared to hundreds in mainstream ECS libraries!)
Usage
Add the following to you Cargo.toml file:
planck_ecs = "*"
Use it like so:
use planck_ecs::*;
fn main() {
#[derive(Default)]
pub struct A;
let mut world = World::default();
let sys = (|comps: &mut Components<A>, entities: &mut Entities| {
let entity = entities.create();
comps.insert(entity, A);
Ok(())
}).system();
let mut dispatch = DispatcherBuilder::new().add_system(sys).build(&mut world);
dispatch.run_seq(&world).unwrap();
dispatch.run_seq(&world).unwrap();
dispatch.run_seq(&world).unwrap();
assert!(world.get::<Components<A>>().is_ok());
}
For more examples, see the two following repositories' example folders and documentation:
- world_dispatcher: information on systems, world and dispatchers.
- entity_component: information on entities, components and joins.
Maintainer Information
- Maintainer: Jojolepro
- Contact: jojolepro [at] jojolepro [dot] com
- Website: jojolepro.com
- Patreon: patreon
Licence
CC0, public domain.
TLDR: You can do whatever you want with it. Have fun!
Following discussions on reddit, I'll add the following: We will not be suing anybody for patent infringement. Also, while not enforced by the CC0 license, we ask you to please not pretend you wrote the original software. That just wouldn't be a nice thing to do and we trust that you are a nice person.