npm.io
0.3.0 • Published 7 years ago

micro-ecs

Licence
MIT
Version
0.3.0
Deps
0
Size
29 kB
Vulns
0
Weekly
0
Stars
1

micro-ecs

A small ECS framework that works best with TypeScript.

I made this for a game I'm making.

Testing

The unit tests for the project can be run with npm run test.

Example Usages

First, let's set up the world and Model we'll be using:

interface Model {
    name: string,
    age: number
}

const world = new World<Model>();
const baseQuery = query<Model>();
Adding entities
world.addEntities(
    {name: 'john'},
    {age: 10},
    {name: 'both', age: 20}
);
Selecting all entities with certain keys
const nameAndAge = baseQuery.select('name', 'age').forEach(console.log);
world.run(nameAndAge);
Selecting on certain keys and then filtering
const namedAdults = baseQuery
    .select('name', 'age')
    .filter(x => x.age >= 18)
    .forEach(console.log);
world.run(namedAdults);
Selecting just the first matching item
const firstAdult = baseQuery
    .select('age')
    .filter(x => x.age >= 18) 
    .first()
    .forEach(console.log);
world.run(namedAdults);
Deleting a key from all entities
const deleteAge = baseQuery.select('age').map(_ => {age: undefined});
world.run(deleteAge);
Deleting all entities
const deleteAll = baseQuery.select().map(_ => undefined);
world.run(deleteAll);

Keywords