@thi.ng/ecs
Version:
Entity Component System based around typed arrays & sparse sets
35 lines • 1.85 kB
TypeScript
import type { Event, FnO2, FnO3, IID } from "@thi.ng/api";
import { type ComponentID, type GroupInfo, type GroupOpts, type GroupTuple, type ICache, type IComponent } from "../api.js";
export declare class Group<SPEC, K extends ComponentID<SPEC>> implements IID<string> {
readonly id: string;
components: IComponent<K, any, any, any>[];
owned: IComponent<K, any, any, any>[];
ids: Set<number>;
n: number;
info: GroupInfo<SPEC, K>;
cache: ICache<GroupTuple<SPEC, K>>;
constructor(comps: IComponent<K, any, any, any>[], owned: IComponent<K, any, any, any>[] | undefined, opts: GroupOpts);
release(): void;
has(id: number): boolean;
values(): Generator<GroupTuple<SPEC, K>, void, unknown>;
getIndex(i: number): GroupTuple<SPEC, K> | undefined;
getEntity(id: number): GroupTuple<SPEC, K> | undefined;
getEntityUnsafe(id: number): GroupTuple<SPEC, K>;
run(fn: FnO2<GroupInfo<SPEC, K>, number, void>, ...args: any[]): void;
forEachRaw(fn: FnO3<GroupInfo<SPEC, K>, number, number, void>, ...args: any[]): void;
forEach(fn: FnO2<GroupTuple<SPEC, K>, number, void>, ...args: any[]): void;
isFullyOwning(): boolean;
isValidID(id: number): boolean;
protected onAddListener(e: Event): void;
protected onDeleteListener(e: Event): void;
protected onChangeListener(e: Event): void;
protected addExisting(): void;
protected addID(id: number, validate?: boolean): void;
protected removeID(id: number, validate?: boolean): void;
protected reorderOwned(id: number, n: number): void;
protected ownedValues(): Generator<GroupTuple<SPEC, K>, void, unknown>;
protected nonOwnedValues(): Generator<GroupTuple<SPEC, K>, void, unknown>;
protected ensureFullyOwning(): void;
protected addRemoveListeners(add: boolean): void;
}
//# sourceMappingURL=group.d.ts.map