entix-ecs
Version:
A Class based ECS Package.
24 lines (23 loc) • 1.16 kB
TypeScript
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 {};