UNPKG

entix-ecs

Version:
24 lines (23 loc) 1.16 kB
export type EntityId = number; export type ComponentClass<T> = new (...args: any[]) => T; type Query = 'All' | 'Any' | 'None'; export declare class EntityManager { private entityCount; private entities; private componentMap; createEntity(): EntityId; addComponent<T>(id: EntityId, componentClass: ComponentClass<T>, componentInstance: T): void; removeComponent<T>(id: EntityId, componentClass: ComponentClass<T>): void; getComponent<T>(id: EntityId, componentClass: ComponentClass<T>): T | undefined; getComponent<T>(id: EntityId, componentClass: ComponentClass<T>, strict: true): T; getComponent<T>(id: EntityId, componentClass: ComponentClass<T>, strict: false): T | undefined; getAllComponents(id: EntityId): any[]; hasComponent<T>(id: EntityId, componentClass: ComponentClass<T>): boolean; removeEntity(id: EntityId): void; query<T extends Record<string, ComponentClass<any>>>(filterType: Query, componentsToMatch: T, callback: (id: EntityId, matched: { [K in keyof T]: InstanceType<T[K]>; }) => void): void; getAllEntities(): EntityId[]; hasEntity(id: EntityId): boolean; } export {};