improve gui rendering
This commit is contained in:
@@ -1,36 +1,26 @@
|
||||
window.GameWindow = class {
|
||||
|
||||
constructor(minecraft, renderer, canvasWrapperId) {
|
||||
this.renderer = renderer;
|
||||
constructor(minecraft, canvasWrapperId) {
|
||||
this.canvasWrapperId = canvasWrapperId;
|
||||
|
||||
this.mouseMotionX = 0;
|
||||
this.mouseMotionY = 0;
|
||||
this.mouseLocked = false;
|
||||
|
||||
let wrapper = document.getElementById(this.canvasWrapperId);
|
||||
this.wrapper = document.getElementById(this.canvasWrapperId);
|
||||
|
||||
// Stats
|
||||
this.stats = new Stats()
|
||||
this.stats.showPanel(0);
|
||||
wrapper.appendChild(this.stats.dom);
|
||||
this.wrapper.appendChild(this.stats.dom);
|
||||
|
||||
// Add web renderer canvas to wrapper
|
||||
let canvas = renderer.canvasElement;
|
||||
wrapper.appendChild(canvas);
|
||||
|
||||
// Init
|
||||
this.onResize();
|
||||
// Initialize window size
|
||||
this.updateWindowSize();
|
||||
|
||||
// On resize
|
||||
let scope = this;
|
||||
window.addEventListener('resize', _ => scope.onResize(), false);
|
||||
|
||||
// Request focus
|
||||
canvas.onclick = function () {
|
||||
canvas.requestPointerLock();
|
||||
}
|
||||
|
||||
// Focus listener
|
||||
document.addEventListener('pointerlockchange', _ => this.onFocusChanged(), false);
|
||||
|
||||
@@ -44,25 +34,38 @@ window.GameWindow = class {
|
||||
Keyboard.create();
|
||||
}
|
||||
|
||||
loadRenderer(renderer) {
|
||||
this.renderer = renderer;
|
||||
|
||||
let canvas = renderer.canvasElement;
|
||||
|
||||
// Add web renderer canvas to wrapper
|
||||
this.wrapper.appendChild(canvas);
|
||||
|
||||
// Initialize window size
|
||||
this.onResize();
|
||||
|
||||
// Request focus
|
||||
canvas.onclick = function () {
|
||||
canvas.requestPointerLock();
|
||||
}
|
||||
}
|
||||
|
||||
updateWindowSize() {
|
||||
this.width = this.wrapper.offsetWidth;
|
||||
this.height = this.wrapper.offsetHeight;
|
||||
}
|
||||
|
||||
onResize() {
|
||||
// Get canvas size
|
||||
let canvasElement = document.getElementById(this.canvasWrapperId);
|
||||
this.width = canvasElement.offsetWidth;
|
||||
this.height = canvasElement.offsetHeight;
|
||||
this.updateWindowSize();
|
||||
|
||||
// Adjust camera
|
||||
this.renderer.camera.aspect = this.width / this.height;
|
||||
this.renderer.camera.updateProjectionMatrix();
|
||||
this.renderer.webRenderer.setSize(this.width, this.height);
|
||||
|
||||
// Update HUD camera
|
||||
this.renderer.camera2D.left = -this.width / 2;
|
||||
this.renderer.camera2D.right = this.width / 2;
|
||||
this.renderer.camera2D.top = this.height / 2;
|
||||
this.renderer.camera2D.bottom = -this.height / 2;
|
||||
this.renderer.camera2D.updateProjectionMatrix();
|
||||
|
||||
console.log("Resize");
|
||||
// Reinitialize gui
|
||||
this.renderer.initializeGui();
|
||||
}
|
||||
|
||||
onFocusChanged() {
|
||||
@@ -75,4 +78,5 @@ window.GameWindow = class {
|
||||
this.mouseX = event.clientX;
|
||||
this.mouseY = event.clientY;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user