From 90c7707e5ae21ff6b08146226110d11798a94bdc Mon Sep 17 00:00:00 2001 From: josua Date: Fri, 27 Sep 2019 12:24:49 +1000 Subject: [PATCH] Created a more efficient rotation function --- src/shootergame/audio/AudioObject.java | 2 +- src/shootergame/display/DisplayRender.java | 11 +-------- src/shootergame/display/DisplayWindow.java | 2 ++ src/shootergame/entity/EntityBoss.java | 1 - .../entity/particle/ParticleBlood.java | 2 -- .../entity/player/EntityPlayer.java | 1 - src/shootergame/input/JoystickCallback.java | 14 ++++++++--- src/shootergame/input/KeyCallback.java | 24 +++++++++++++++++-- src/shootergame/input/types/InputGame.java | 1 - src/shootergame/input/types/InputMenu.java | 2 -- src/shootergame/time/NoSleep.java | 1 - src/shootergame/util/gl/GlHelpers.java | 2 +- src/shootergame/util/math/MathHelpers.java | 22 +++++++++++++---- 13 files changed, 55 insertions(+), 30 deletions(-) diff --git a/src/shootergame/audio/AudioObject.java b/src/shootergame/audio/AudioObject.java index 0373a75..9c953cb 100644 --- a/src/shootergame/audio/AudioObject.java +++ b/src/shootergame/audio/AudioObject.java @@ -86,7 +86,7 @@ public class AudioObject double z = pos.z; // Calculate the rotation - Vec2d rotated = MathHelpers.rotate2(new Vec2d(x, y), angle_r); + Vec2d rotated = MathHelpers.rotate2(new Vec2d(x, y), -angle_r); x = rotated.x; y = rotated.y; diff --git a/src/shootergame/display/DisplayRender.java b/src/shootergame/display/DisplayRender.java index 7c38cae..d66f44c 100644 --- a/src/shootergame/display/DisplayRender.java +++ b/src/shootergame/display/DisplayRender.java @@ -1,15 +1,6 @@ package shootergame.display; -import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; -import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT; -import static org.lwjgl.opengl.GL11.GL_MODELVIEW; -import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA; -import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA; -import static org.lwjgl.opengl.GL11.glBlendFunc; -import static org.lwjgl.opengl.GL11.glClear; -import static org.lwjgl.opengl.GL11.glLoadMatrixf; -import static org.lwjgl.opengl.GL11.glMatrixMode; -import static org.lwjgl.opengl.GL11.glViewport; +import static org.lwjgl.opengl.GL33.*; import org.joml.Matrix4f; import org.lwjgl.opengl.GL; diff --git a/src/shootergame/display/DisplayWindow.java b/src/shootergame/display/DisplayWindow.java index 2289102..48ef75a 100644 --- a/src/shootergame/display/DisplayWindow.java +++ b/src/shootergame/display/DisplayWindow.java @@ -61,6 +61,8 @@ public class DisplayWindow implements IMainloopTask // Set the window hint GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); + GLFW.glfwWindowHint(GLFW.GLFW_VERSION_MAJOR, 3); + GLFW.glfwWindowHint(GLFW.GLFW_VERSION_MINOR, 3); // Create the window this.window = GLFW.glfwCreateWindow(this.width, this.height, this.name, monitor, 0); diff --git a/src/shootergame/entity/EntityBoss.java b/src/shootergame/entity/EntityBoss.java index 07e0d3a..8090db4 100644 --- a/src/shootergame/entity/EntityBoss.java +++ b/src/shootergame/entity/EntityBoss.java @@ -7,7 +7,6 @@ import shootergame.display.bossbar.IBossBar; import shootergame.init.Items; import shootergame.init.Textures; import shootergame.init.Tiles; -import shootergame.tiles.Tile; import shootergame.time.GameTimer; import shootergame.util.gl.texture.TextureReference; import shootergame.util.math.ItemStack; diff --git a/src/shootergame/entity/particle/ParticleBlood.java b/src/shootergame/entity/particle/ParticleBlood.java index eb21a49..67762f7 100644 --- a/src/shootergame/entity/particle/ParticleBlood.java +++ b/src/shootergame/entity/particle/ParticleBlood.java @@ -39,8 +39,6 @@ public class ParticleBlood extends EntityParticle // Call super super.tick(chunk, layer); - Main.player.setHealth(100); - // Move in the velocity and remove some of it pos.x += velocity.x; pos.y += velocity.y; diff --git a/src/shootergame/entity/player/EntityPlayer.java b/src/shootergame/entity/player/EntityPlayer.java index 16e24b2..ebc910f 100644 --- a/src/shootergame/entity/player/EntityPlayer.java +++ b/src/shootergame/entity/player/EntityPlayer.java @@ -10,7 +10,6 @@ import shootergame.entity.EntityHeight; import shootergame.entity.EntityInventory; import shootergame.entity.EntityItem; import shootergame.entity.EntityVertical; -import shootergame.init.Items; import shootergame.init.Textures; import shootergame.inventory.Inventory; import shootergame.util.gl.GlHelpers; diff --git a/src/shootergame/input/JoystickCallback.java b/src/shootergame/input/JoystickCallback.java index d45d150..9f126eb 100644 --- a/src/shootergame/input/JoystickCallback.java +++ b/src/shootergame/input/JoystickCallback.java @@ -1,12 +1,20 @@ package shootergame.input; -import java.io.IOException; +import static shootergame.input.GameInput.activateItem_last; +import static shootergame.input.GameInput.activateTile_last; +import static shootergame.input.GameInput.dropItem_last; +import static shootergame.input.GameInput.fireGun; +import static shootergame.input.GameInput.hotbar_l; +import static shootergame.input.GameInput.hotbar_r; +import static shootergame.input.GameInput.moveDown; +import static shootergame.input.GameInput.moveUp; +import static shootergame.input.GameInput.move_last; +import static shootergame.input.GameInput.startButton_last; + import java.nio.ByteBuffer; import java.nio.FloatBuffer; import java.util.ArrayList; -import static shootergame.input.GameInput.*; - import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWJoystickCallbackI; diff --git a/src/shootergame/input/KeyCallback.java b/src/shootergame/input/KeyCallback.java index f9dc683..894e01e 100644 --- a/src/shootergame/input/KeyCallback.java +++ b/src/shootergame/input/KeyCallback.java @@ -1,7 +1,27 @@ package shootergame.input; -import static org.lwjgl.glfw.GLFW.*; -import static shootergame.input.GameInput.*; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_1; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_2; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_3; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_4; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_5; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_6; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_A; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_D; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_E; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_ENTER; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_ESCAPE; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_Q; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_RIGHT_SHIFT; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_S; +import static org.lwjgl.glfw.GLFW.GLFW_KEY_W; +import static org.lwjgl.glfw.GLFW.GLFW_RELEASE; +import static shootergame.input.GameInput.fireGun; +import static shootergame.input.GameInput.moveDown; +import static shootergame.input.GameInput.moveLeft; +import static shootergame.input.GameInput.moveRight; +import static shootergame.input.GameInput.moveUp; +import static shootergame.input.GameInput.move_last; import org.lwjgl.glfw.GLFWKeyCallbackI; diff --git a/src/shootergame/input/types/InputGame.java b/src/shootergame/input/types/InputGame.java index 6534b95..0c68d2a 100644 --- a/src/shootergame/input/types/InputGame.java +++ b/src/shootergame/input/types/InputGame.java @@ -1,7 +1,6 @@ package shootergame.input.types; import shootergame.Main; -import shootergame.menu.MenuGame; import shootergame.menu.MenuGamePause; import shootergame.util.math.MathHelpers; diff --git a/src/shootergame/input/types/InputMenu.java b/src/shootergame/input/types/InputMenu.java index 4c1f738..2ff0725 100644 --- a/src/shootergame/input/types/InputMenu.java +++ b/src/shootergame/input/types/InputMenu.java @@ -1,7 +1,5 @@ package shootergame.input.types; -import shootergame.Main; - public class InputMenu implements Input { diff --git a/src/shootergame/time/NoSleep.java b/src/shootergame/time/NoSleep.java index b2a31a7..11221cf 100644 --- a/src/shootergame/time/NoSleep.java +++ b/src/shootergame/time/NoSleep.java @@ -2,7 +2,6 @@ package shootergame.time; import java.awt.AWTException; import java.awt.Robot; -import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import mainloop.task.IMainloopTask; diff --git a/src/shootergame/util/gl/GlHelpers.java b/src/shootergame/util/gl/GlHelpers.java index ddced71..0116ab5 100644 --- a/src/shootergame/util/gl/GlHelpers.java +++ b/src/shootergame/util/gl/GlHelpers.java @@ -1,6 +1,6 @@ package shootergame.util.gl; -import static org.lwjgl.opengl.GL11.*; +import static org.lwjgl.opengl.GL33.*; import shootergame.Main; diff --git a/src/shootergame/util/math/MathHelpers.java b/src/shootergame/util/math/MathHelpers.java index ec757de..e3973fd 100644 --- a/src/shootergame/util/math/MathHelpers.java +++ b/src/shootergame/util/math/MathHelpers.java @@ -84,16 +84,28 @@ public class MathHelpers else return a; } + /* + + def rotate(point, angle): + angle = angle * (math.pi/180) + s = math.sin(angle) + c = math.cos(angle) + x = point[0] * c - point[1] * s + y = point[0] * s + point[1] * c + return [x, y] + + */ + public static Vec2d rotate2(Vec2d pos, double angle) { - // Get the angle and the distance from the centre to the point - double p_angle = Math.atan2(pos.y, pos.x); - double p_distance = Math.sqrt(pos.y*pos.y + pos.x*pos.x); + // Calculate 2 sin and cos values + double s = Math.sin(angle); + double c = Math.cos(angle); // Return and calculate the new positions return new Vec2d( - p_distance * Math.sin(angle + p_angle), - p_distance * Math.cos(angle + p_angle)); + pos.x * c - pos.y * s, + pos.x * s + pos.y * c); } public static double biggest(double a, double b)