entix-ecs
Version:
A Class based ECS Package.
21 lines (20 loc) • 883 B
TypeScript
export type EntityId = number;
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;
getAllComponents(id: EntityId): any[];
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[];
private ensureEntityExists;
}
export {};