Skip to content

A very simple entity-component library in Rust for simple projects.

Notifications You must be signed in to change notification settings

marciorvneto/enco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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();

About

A very simple entity-component library in Rust for simple projects.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages