freeblox/packages/engine/src/core/engine.ts

40 lines
977 B
TypeScript

import { EngineComponent } from '..';
import { EngineEvents } from '../types/events';
import { GameRunner } from '../types/game-runner';
import { EventEmitter, EventMap } from '../utils/events';
import { Renderer } from './renderer';
export class Engine<
TEvents extends EventMap = EngineEvents
> extends GameRunner {
public lastTick = performance.now();
public running = false;
public events = new EventEmitter<TEvents>();
public render!: Renderer;
public element!: HTMLElement;
public components: EngineComponent[] = [];
mount(element: HTMLElement): void {
this.element = element;
this.render = new Renderer(element);
for (const component of this.components) {
component.initialize();
}
this.start();
}
loop(now: number): void {
throw new Error('Method not implemented.');
}
start(): void {
throw new Error('Method not implemented.');
}
stop(): void {
throw new Error('Method not implemented.');
}
}