UNPKG

@thi.ng/ecs

Version:

Entity Component System based around typed arrays & sparse sets

35 lines 1.85 kB
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