5 releases
0.1.4 | Sep 30, 2022 |
---|---|
0.1.3 | Sep 29, 2022 |
0.1.2 | Sep 29, 2022 |
0.1.1 | Sep 29, 2022 |
0.1.0 | Sep 29, 2022 |
#1471 in Game dev
11KB
162 lines
ENCO (ENtities and COmponents)
This is a very simple library for managing entities and components. This is not an entity component system (ECS) library.
ENCO was designed with simplicity in mind and should not be used in projects where performance is critical.
Having said that, it is very straightforward to use.
Basic usage
Entities live in a World
, which serves as an api for modifying them.
Entities can be given components, which can be of any type.
use enco::world::*;
// Defining the components
struct PositionComponent {
x: i32,
y: i32,
}
struct TagComponent {
tag: String
}
// Creating a world
let mut world = World::new();
// Creating entities
let entity_id = world
.create_entity()
.with(PositionComponent{x: 0, y: 0})
.with(TagComponent{tag: "First entity".to_string()})
.done();
// Entity components can be accessed through the entity id
let tag_component = world
.get_entity_component::<TagComponent>(&entity_id)
.unwrap();
// Entity components can be deleted
let tag_component = world
.delete_entity_component::<TagComponent>(&entity_id)
.unwrap();
// Entities themselves can be deleted
world.delete_entity(&entity_id).unwrap();