split up renderers into different classes

This commit is contained in:
LabyStudio
2022-02-04 23:08:37 +01:00
parent 28b761d1be
commit c8111badb9
7 changed files with 81 additions and 105 deletions
@@ -15,15 +15,6 @@ window.WorldRenderer = class {
// Block Renderer
this.blockRenderer = new BlockRenderer(this);
// Initialize renderers
this.initializeRenderer();
this.initializeGui();
// Load renderer into window
this.window.loadRenderer(this);
}
initializeRenderer() {
// Create world camera
this.camera = new THREE.PerspectiveCamera(0, 1, 0.001, 1000);
this.camera.rotation.order = 'ZYX';
@@ -52,47 +43,6 @@ window.WorldRenderer = class {
this.webRenderer.clear();
}
initializeGui() {
// Update camera size
this.window.canvas2d.width = this.window.width;
this.window.canvas2d.height = this.window.height;
// Get context stack of 2d canvas
this.stack2d = this.window.canvas2d.getContext('2d');
this.stack2d.webkitImageSmoothingEnabled = false;
this.stack2d.mozImageSmoothingEnabled = false;
this.stack2d.imageSmoothingEnabled = false;
// Create texture from rendered graphics.
//this.frameBuffer = new THREE.Texture(this.canvas2d)
//this.frameBuffer.needsUpdate = true;
//this.frameBuffer.minFilter = THREE.LinearFilter;
//this.frameBuffer.maxFilter = THREE.LinearFilter;
// Create HUD material.
//let material = new THREE.MeshBasicMaterial({
// map: this.frameBuffer,
// transparent: true
//});
// Create plane to render the HUD. This plane fill the whole screen.
//let geometry = new THREE.PlaneGeometry(this.canvas2d.width, this.canvas2d.height);
//let plane = new THREE.Mesh(geometry, material);
// Create also a custom scene for HUD.
//this.scene2d = new THREE.Scene();
//this.scene2d.add(plane);
// Create 2D camera
/*this.camera2d = new THREE.OrthographicCamera(0, 0, 0, 0, 0, 30);
this.camera2d.aspect = this.window.width / this.window.height;
this.camera2d.left = -this.window.width / 2;
this.camera2d.right = this.window.width / 2;
this.camera2d.top = this.window.height / 2;
this.camera2d.bottom = -this.window.height / 2;
this.camera2d.updateProjectionMatrix();*/
}
render(partialTicks) {
// Setup camera
this.orientCamera(partialTicks);
@@ -103,19 +53,6 @@ window.WorldRenderer = class {
let cameraChunkZ = Math.floor(player.z >> 4);
this.renderChunks(cameraChunkX, cameraChunkZ);
// Reset 2d canvas
this.stack2d.clearRect(0, 0, this.window.width, this.window.height);
// Render in-game overlay
let mouseX = this.minecraft.window.mouseX;
let mouseY = this.minecraft.window.mouseY;
this.minecraft.ingameOverlay.render(this.stack2d, mouseX, mouseY, partialTicks);
// Render current screen
if (!(this.minecraft.currentScreen === null)) {
this.minecraft.currentScreen.drawScreen(this.stack2d, mouseX, mouseY, partialTicks);
}
// Render actual scene and hud
this.webRenderer.render(this.scene, this.camera);
}
@@ -0,0 +1,36 @@
window.ScreenRenderer = class {
constructor(minecraft, window) {
this.minecraft = minecraft;
this.window = window;
}
initialize() {
// Update camera size
this.window.canvas2d.width = this.window.width;
this.window.canvas2d.height = this.window.height;
// Get context stack of 2d canvas
this.stack2d = this.window.canvas2d.getContext('2d');
this.stack2d.webkitImageSmoothingEnabled = false;
this.stack2d.mozImageSmoothingEnabled = false;
this.stack2d.imageSmoothingEnabled = false;
}
render(partialTicks) {
let mouseX = this.minecraft.window.mouseX;
let mouseY = this.minecraft.window.mouseY;
// Reset 2d canvas
this.stack2d.clearRect(0, 0, this.window.width, this.window.height);
// Render in-game overlay
this.minecraft.ingameOverlay.render(this.stack2d, mouseX, mouseY, partialTicks);
// Render current screen
if (!(this.minecraft.currentScreen === null)) {
this.minecraft.currentScreen.drawScreen(this.stack2d, mouseX, mouseY, partialTicks);
}
}
}