planck_ecs

Crates.ioplanck_ecs
lib.rsplanck_ecs
version1.2.1
sourcesrc
created_at2021-03-08 17:20:36.834581
updated_at2021-06-21 12:47:26.963535
descriptionA tiny but very powerful ECS framework.
homepage
repositoryhttps://github.com/jojolepro/planck_ecs/
max_upload_size
id365780
size182,115
Joël Lupien (jojolepro)

documentation

README

Planck ECS Planck ECS

The full ECS (Entity-Component-System) library.

Support an Open Source Developer! :hearts:
Become a patron

Composed of two smaller libraries:

Read the documentation.

Why would you use this ECS library?

  • Compatible with all platforms, including WASM!
  • Fast enough on every operation, not just iteration.
  • 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:

Maintainer Information

  • Maintainer: Jojolepro
  • Contact: jojolepro [at] jojolepro [dot] com
  • Website: jojolepro.com
  • Patreon: patreon
Commit count: 28

cargo fmt