Archived
Private
Public Access
1
0

Initial commit

This commit is contained in:
2022-09-04 12:45:01 +02:00
commit f4a01d6a69
11601 changed files with 4206660 additions and 0 deletions

View 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);
}
}
}