Skip to content

Entity Component System using Typescript with decorators

License

Notifications You must be signed in to change notification settings

Xan0C/curbl-ecs

Repository files navigation

CURBL-ECS

curbl-ecs is a lightweight Entity Component.

Example

  • Creating a Component
import { ECS } from '@curbl/ecs';

const ecs = new ECS();

@ecs.Component('Position') 
class PositionComponent {
    x: number = 0;
    y: number = 0;
}
  • Adding a Entity with components
const ecs = new ECS();
const entity = ecs.addEntity(new PositionComponent());
  • Create entity and add Component
const ecs = new ECS();
const entity = ecs.addEntity();
entity.add(new PositionComponent());
  • Get Component from Entity
entity.get<PositionComponent>('Position').x = 42;
  • Creating a System
const ecs = new ECS();

@ecs.System('Position')
export class MySystem {

    setUp(): void {
        //Called when the System is created/added to the ECS 
    }

    tearDown(): void {
        //Called when the System is removed from the ECS
    }

    update(): void {
        const entities = this.entities();
        for (let i = 0, entity: Entity; entity = entities[i]; i++) {
            //Do stuff with the entities
        }
    }
}

About

Entity Component System using Typescript with decorators

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •