Crates.io | ABC-ECS |
lib.rs | ABC-ECS |
version | 0.2.1 |
source | src |
created_at | 2023-12-07 18:25:12.913306 |
updated_at | 2024-07-25 15:52:01.447399 |
description | A simple, fast, and flexible Entity-Component-System library for Rust. |
homepage | |
repository | https://github.com/ABC-Engine/ABC-ECS |
max_upload_size | |
id | 1061255 |
size | 101,272 |
This ECS was built with usability in mind. That being said it is only a pseudo-ECS. As needed you can use either the run or single_entity_step and pre-step to utilize the multithreading we offer. As needed you can switch between these two methods. This ECS can be really performant if you need it to be.
This Rust project provides a basic framework for managing game entities, components, and systems in the ABC Game Engine using an Entity Component System (ECS) approach.
Create a World:
use ABC_ECS::World;
struct Position {
x: f32,
y: f32,
}
struct Velocity {
x: f32,
y: f32,
}
fn main(){
let mut world = World::new();
let entities_and_components = &mut world.entities_and_components;
// Add an Entity and Components:
let entity = entities_and_components.add_entity();
// Add components like Position and Velocity
entities_and_components.add_component_to(entity, Position { x: 0.0, y: 0.0 });
entities_and_components.add_component_to(entity, Velocity { x: 1.0, y: 1.0 });
// or you can do it in one step:
let entity = entities_and_components
.add_entity_with((Position { x: 0.0, y: 0.0 }, Velocity { x: 1.0, y: 1.0 }));
}
Visit the docs here.
Contributions are welcome! Start by filing an issue and we can work forward from there! If you're not sure what to work on but you want to help Join the discord and ping me, I'm happy to help!