summaryrefslogtreecommitdiff
path: root/src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-04-17 12:12:01 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-04-17 12:12:01 -0400
commit180aad05decc7eefa87e4e45d6747c48f40e5361 (patch)
tree51545197f7c94b4022acab880772c9f4fc65db0e /src/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java
downloadminecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.gz
minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.tar.bz2
minecraftjava-180aad05decc7eefa87e4e45d6747c48f40e5361.zip
Diffstat (limited to '')
-rwxr-xr-xsrc/main/java/net/tylermurphy/Minecraft/Render/MainRenderer.java73
1 files changed, 73 insertions, 0 deletions
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);
+ }
+
+}