UNPKG

@thi.ng/ecs

Version:

Entity Component System based around typed arrays & sparse sets

27 lines 1.83 kB
import type { Event, INotify, Listener, Maybe } from "@thi.ng/api"; import { IDGen } from "@thi.ng/idgen"; import type { IMemPoolArray } from "@thi.ng/malloc"; import { type ComponentID, type ECSEventType, type ECSOpts, type GroupOpts, type IComponent, type MemMappedComponentOpts, type ObjectComponentOpts } from "./api.js"; import { MemMappedComponent } from "./components/mem-component.js"; import { ObjectComponent } from "./components/object-component.js"; import { Group } from "./groups/group.js"; export declare class ECS<SPEC> implements INotify<ECSEventType> { idgen: IDGen; pool: IMemPoolArray; components: Map<ComponentID<SPEC>, IComponent<ComponentID<SPEC>, any, any, any>>; groups: Map<string, Group<SPEC, any>>; constructor(opts?: Partial<ECSOpts>); defEntity<K extends ComponentID<SPEC>>(comps?: K[] | IComponent<K, any, any, any>[] | Partial<Pick<SPEC, K>>): number; defComponent<K extends ComponentID<SPEC>>(opts: MemMappedComponentOpts<K>): Maybe<MemMappedComponent<K>>; defComponent<K extends ComponentID<SPEC>>(opts: ObjectComponentOpts<K, SPEC[K]>): Maybe<ObjectComponent<K, SPEC[K]>>; defGroup<K extends ComponentID<SPEC>>(comps: IComponent<K, any, any, any>[], owned?: IComponent<K, any, any, any>[], opts?: Partial<GroupOpts>): Group<SPEC, K>; hasID(id: number): void; deleteID(id: number): boolean; componentsForID(id: number): IterableIterator<IComponent<ComponentID<SPEC>, any, any, any>>; groupsForID(id: number): IterableIterator<Group<SPEC, any>>; setCapacity(newCap: number): void; addListener(id: ECSEventType, fn: Listener<ECSEventType>, scope?: any): boolean; removeListener(id: ECSEventType, fn: Listener<ECSEventType>, scope?: any): boolean; notify(event: Event<ECSEventType>): boolean; } //# sourceMappingURL=ecs.d.ts.map