This package contains various tools for use with Ash - an entity component system framework for game development.
npm i @ash.ts/tools
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
};
}
TBD
TBD
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.