excalibur
Version:
Excalibur.js is a simple JavaScript game engine with TypeScript bindings for making 2D games in HTML5 Canvas. Our mission is to make web game development as simple as possible.
53 lines (52 loc) • 1.56 kB
TypeScript
import { System, SystemType } from './System';
import { Scene } from '../Scene';
import { World } from './World';
export interface SystemCtor<T extends System> {
new (...args: any[]): T;
}
/**
*
*/
export declare function isSystemConstructor(x: any): x is SystemCtor<System>;
/**
* The SystemManager is responsible for keeping track of all systems in a scene.
* Systems are scene specific
*/
export declare class SystemManager {
private _world;
/**
* List of systems, to add a new system call {@apilink SystemManager.addSystem}
*/
systems: System[];
initialized: boolean;
constructor(_world: World);
/**
* Get a system registered in the manager by type
* @param systemType
*/
get<T extends System>(systemType: SystemCtor<T>): T | null;
/**
* Adds a system to the manager, it will now be updated every frame
* @param systemOrCtor
*/
addSystem(systemOrCtor: SystemCtor<System> | System): void;
/**
* Removes a system from the manager, it will no longer be updated
* @param system
*/
removeSystem(system: System): void;
/**
* Initialize all systems in the manager
*
* Systems added after initialize() will be initialized on add
*/
initialize(): void;
/**
* Updates all systems
* @param type whether this is an update or draw system
* @param scene context reference
* @param elapsed time in milliseconds
*/
updateSystems(type: SystemType, scene: Scene, elapsed: number): void;
clear(): void;
}