tstl-tiny-ecs
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

TSTL tiny-ecs

Declarations for tiny-ecs, Entity Component System for Lua that's simple, flexible, and useful.

Command Description
yarn add -D tstl-tiny-ecs Install these declarations
yarn add bakpakin/tiny-ecs Install tiny-ecs

Upon installation these declarations can be linked to a tsconfig.json file.

{
    "compilerOptions": {
        "types": [
            "tstl-tiny-ecs"
        ]
    }
}

And used within any .ts file.

import * as tiny from "tiny";
declare let world: tiny.World;

class Vec2
{
    constructor(public x: number = 0, public y: number = 0)
    {
    }
}

interface HasPositionComponent
{
    position: Vec2;
}

interface HasVelocityComponent
{
    velocity: Vec2;
}

class Unit implements HasPositionComponent, HasVelocityComponent
{
    position: Vec2;
    velocity: Vec2;
    constructor(pos_x: number = 0, pos_y: number = 0, vx: number = 0, vy: number = 0)
    {
        this.position = new Vec2(pos_x,pos_y);
        this.velocity = new Vec2(vx,vy);
    }
}

declare let unit: Unit;

love.load = () => {
    world = tiny.world();
    
    unit = new Unit(0,0,10,5);

    world.addEntity(unit);

    let physicsSystem = tiny.processingSystem();
    
    physicsSystem.filter = tiny.requireAll('position','velocity');
    
    physicsSystem.process = (e: HasPositionComponent & HasVelocityComponent, dt: number) => {
        e.position.x += e.velocity.x*dt;
        e.position.y += e.velocity.y*dt;
    };

    world.addSystem(physicsSystem);
};

love.update = (dt: number) => {
    world.update(dt);
    print("unit.x =",unit.position.x,"; unit.y =",unit.position.y);
}

Make sure to append ";./node_modules/tiny-ecs/?.lua" to your package.path in a conf.ts file (this is run first) to assist where Lua looks for modules.

package.path += ";./node_modules/tiny-ecs/?.lua";

Also you need to add "typescript-to-lua/language-extensions" to tsconfig.json file.

{
    "compilerOptions": {
        "types": [
            "typescript-to-lua/language-extensions"
        ]
    }
}

Package Sidebar

Install

npm i tstl-tiny-ecs

Weekly Downloads

0

Version

0.0.1

License

ISC

Unpacked Size

18 kB

Total Files

3

Last publish

Collaborators

  • maxiy01