UNPKG

@thi.ng/ecs

Version:

Entity Component System based around typed arrays & sparse sets

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