@thi.ng/ecs
Version:
Entity Component System based around typed arrays & sparse sets
35 lines • 1.85 kB
TypeScript
import type { Event, IID, INotify, Listener, Maybe, UIntArray } from "@thi.ng/api";
import type { IMemPoolArray } from "@thi.ng/malloc";
import { type ComponentDefaultValue, type ComponentEventType, type IComponent } from "../api.js";
export declare abstract class AComponent<K extends string, VALUES, GET, SET> implements IComponent<K, VALUES, GET, SET>, INotify<ComponentEventType> {
readonly id: K;
abstract readonly size: number;
abstract readonly stride: number;
sparse: UIntArray;
dense: UIntArray;
vals: VALUES;
n: number;
default?: ComponentDefaultValue<SET>;
owner?: IID<string>;
constructor(id: K, sparse: UIntArray, dense: UIntArray, vals: VALUES);
keys(): Uint8Array<ArrayBuffer> | Uint8ClampedArray<ArrayBuffer> | Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>;
values(): Generator<NonNullable<GET>, void, unknown>;
abstract resize(pool: IMemPoolArray, newCap: number): void;
has(id: number): boolean;
abstract get(id: number): Maybe<GET>;
abstract getIndex(i: number): Maybe<GET>;
valueIndexForID(id: number): number;
valueIndexForIDUnsafe(id: number): number;
set(id: number, val: SET): boolean;
setIndex(i: number, val: SET): boolean;
abstract setIndexUnsafe(i: number, val: SET, notify?: boolean): void;
add(id: number, val?: SET): boolean;
delete(id: number): boolean;
addListener(id: ComponentEventType, fn: Listener<ComponentEventType>, scope?: any): boolean;
removeListener(id: ComponentEventType, fn: Listener<ComponentEventType>, scope?: any): boolean;
notify(event: Event<ComponentEventType>): boolean;
notifyChange(id: number): boolean;
abstract swapIndices(src: number, dest: number): boolean;
protected abstract moveIndex(src: number, dest: number): void;
}
//# sourceMappingURL=acomponent.d.ts.map