@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
46 lines (25 loc) • 1.71 kB
TypeScript
interface Type<T> extends Function {
new(...args: any[]): T;
}
export class EntityComponentDataset {
public hasComponent<T>(entity: number, component: Type<T>): boolean
public getComponent<T>(entity: number, component: Type<T>): T | undefined
public getComponentSafe<T>(entity: number, component: Type<T>): T
public addComponentToEntity<T>(entityIndex: number, componentInstance: T): void
public removeComponentFromEntity<T>(entityIndex: number, klass: Type<T>): void
public setComponentTypeMap(types: any[]): void;
public registerComponentType<T>(componentType: Type<T>): boolean
public registerManyComponentTypes(componentTypes: Type<any>[]): boolean
public createEntity(): number
public createEntitySpecific(entityId: number): void
public removeEntity(entityIndex: number): boolean
public removeEntities(entityIndices: number[]): void
public entityExists(entityIndex: number): boolean
public traverseEntities(classes: any[], visitor: (...params: any) => boolean, thisArg?: any): void
public traverseComponents<T>(klass: Type<T>, visitor: (component: T, entity: number) => boolean, thisArg?: any): void
public addEntityEventListener<T>(entity: number, eventName: string, listener: (event: T, entity?: number) => any, thisArg?: any)
public removeEntityEventListener<T>(entity: number, eventName: string, listener: (event: T, entity?: number) => any, thisArg?: any);
public sendEvent<T>(entity: number, name: string, event?: T);
public getComponentClassByName<T>(name: string): Type<T>;
getAnyComponent<T>(type: Type<T>): { entity: number, component: T | null }
}