From 180aad05decc7eefa87e4e45d6747c48f40e5361 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 17 Apr 2023 12:12:01 -0400 Subject: save --- .../tylermurphy/Minecraft/Render/MainRenderer.java | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100755 src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java (limited to 'src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java') diff --git a/src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java b/src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java new file mode 100755 index 0000000..28ec88f --- /dev/null +++ b/src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java @@ -0,0 +1,73 @@ +package net.tylermurphy.Minecraft.Render; + +import net.tylermurphy.Minecraft.Render.Data.Mesh; +import org.joml.Matrix4f; + +import net.tylermurphy.Minecraft.Audio.SoundManager; +import net.tylermurphy.Minecraft.Render.Data.Texture; +import net.tylermurphy.Minecraft.Scene.World; +import net.tylermurphy.Minecraft.UI.UIMaster; +import net.tylermurphy.Minecraft.Util.Constants; +import net.tylermurphy.Minecraft.Render.Data.Display; +import net.tylermurphy.Minecraft.Util.MousePicker; +import org.joml.Vector3f; + +public class MainRenderer { + + private final GuiRenderer guiRenderer; + private final FontRenderer fontRenderer; + private final ChunkRenderer chunkRenderer; + + private Matrix4f projectionMatrix; + + public MainRenderer() { + guiRenderer = new GuiRenderer(); + fontRenderer = new FontRenderer(); + createProjectionMatrix(); + MousePicker.init(projectionMatrix); + chunkRenderer = new ChunkRenderer(projectionMatrix); + } + + public void update() { + if(Display.wasResized) { + Display.wasResized = false; + createProjectionMatrix(); + } + chunkRenderer.render(projectionMatrix); + if(!World.player.isDead) { + World.player.move(); + World.player.getTransform().setRotation(new Vector3f( + World.camera.getPitch(), + -World.camera.getYaw(), + World.camera.getRoll() + )); + World.camera.move(); + } + UIMaster.renderUI(guiRenderer, fontRenderer); + MousePicker.update(); + SoundManager.setListenerData(World.player.getTransform().getPosition().x, World.player.getTransform().getPosition().y , World.player.getTransform().getPosition().z); + } + + public void close() { + guiRenderer.cleanUp(); + chunkRenderer.cleanUp(); + Mesh.cleanUp(); + Texture.cleanUp(); + } + + private void createProjectionMatrix(){ + float aspectRatio = (float) Display.getWidth() / (float) Display.getHeight(); + float y_scale = (float) ((1f / Math.tan(Math.toRadians(Constants.FOV / 2f)))); + float x_scale = y_scale / aspectRatio; + float frustum_length = Constants.FAR_DISTANCE - Constants.NEAR_DISTANCE; + + projectionMatrix = new Matrix4f() + .m00(x_scale) + .m11(y_scale) + .m22( -((Constants.FAR_DISTANCE + Constants.NEAR_DISTANCE) / frustum_length) ) + .m23(-1) + .m32( -((2 * Constants.NEAR_DISTANCE * Constants.FAR_DISTANCE) / frustum_length) ) + .m33(0); + } + +} -- cgit v1.2.3-freya