Initial commit
This commit is contained in:
71
C#/TSEngine/Core/engine.ts
Normal file
71
C#/TSEngine/Core/engine.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
namespace TSE {
|
||||
|
||||
/**
|
||||
* The main GameEngine class.
|
||||
* */
|
||||
export class Engine {
|
||||
private _canvas: HTMLCanvasElement;
|
||||
private _shader: Shader;
|
||||
private _projection: Matrix4x4;
|
||||
private _previousTime: number = 0;
|
||||
|
||||
/**
|
||||
* Creates a new Engine.
|
||||
* */
|
||||
public constructor(canvasId: string) {
|
||||
this._canvas = GLUtilities.initialize(canvasId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts this Engine.
|
||||
* */
|
||||
public start(): void {
|
||||
AssetManager.initialize();
|
||||
ZoneManager.initialize();
|
||||
|
||||
gl.clearColor(0, 0, 0, 1);
|
||||
gl.enable(gl.BLEND);
|
||||
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
//LoadMaterials
|
||||
MaterialManager.registerMaterial(new Material("crate", "/assets/textures/crate.jpg"));
|
||||
MaterialManager.registerMaterial(new Material("goblin", "/assets/textures/goblin.png"));
|
||||
|
||||
//Load Shader
|
||||
this._shader = new BasicShader();
|
||||
this._shader.use();
|
||||
|
||||
//Load
|
||||
this._projection = Matrix4x4.orthographic(0, this._canvas.width, this._canvas.height, 0, -100.0, 100.0);
|
||||
ZoneManager.changeZone(0);
|
||||
|
||||
this.loop();
|
||||
}
|
||||
|
||||
private loop(): void {
|
||||
let delta = performance.now() - this._previousTime;
|
||||
|
||||
MessageBus.update(delta);
|
||||
ZoneManager.update(delta);
|
||||
|
||||
this._previousTime = performance.now();
|
||||
|
||||
gl.clear(gl.COLOR_BUFFER_BIT);
|
||||
|
||||
ZoneManager.render(this._shader);
|
||||
|
||||
//Set Uniforms
|
||||
let projectionPosition = this._shader.getUniformLocation("u_projection");
|
||||
gl.uniformMatrix4fv(projectionPosition, false, new Float32Array(this._projection.data));
|
||||
|
||||
requestAnimationFrame(this.loop.bind(this));
|
||||
}
|
||||
|
||||
public resize(): void {
|
||||
this._projection = Matrix4x4.orthographic(0, this._canvas.width, this._canvas.height, 0, -100.0, 100.0);
|
||||
gl.viewport(0, 0, this._canvas.width, this._canvas.height);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user