Skip to content

Latest commit

 

History

History

tools

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

@ash.ts/tools

This package contains various tools for use with Ash - an entity component system framework for game development.

Installation

npm i @ash.ts/tools

Usage

ListIteratingSystem

Utility class declared as abstract class with updateNode method marked as required. There are also 2 optional callback methods that can be declared in an inherited class:

  • protected nodeAdded?:(node:Node) => void;
  • protected nodeRemoved?:(node:Node) => void;

Example usage:

import { ListIteratingSystem } from '@ash.ts/ash';
import { MovementNode } from '../nodes';

export class MovementSystem extends ListIteratingSystem<MovementNode> {
  constructor() {
    super(MovementNode);
  }

  // required
  public updateNode(node:MovementNode, time:number):void {
    // update logic
  }
  
  // optional
  public nodeAdded = (node:MovementNode) => {
    // logic to execute when new node is added to the system
  };
  
  // optional
  public nodeRemoved = (node:MovementNode) => {
    // logic to execute when new node is removed from the system
  };
}

ComponentPool

TBD

@keep

TBD

defineNode

A tool for simpler creating node classes. It can be used in two ways.

'const/type' way

export const RenderNode = defineNode({ 
  position: Position, 
  display: Display,
}, 'RenderNode');
export type RenderNode = InstanceType<typeof RenderNode>;

or 'inheritance' way:

export class RenderNode extends defineNode({ 
  position: Position, 
  display: Display, 
}) {}

That last way requires the least boilerplate code, so it is the recommended way.