diff --git a/src/configuration/JsonToJava.java b/src/configuration/JsonToJava.java index 5f2961b..c497b50 100644 --- a/src/configuration/JsonToJava.java +++ b/src/configuration/JsonToJava.java @@ -9,7 +9,6 @@ public class JsonToJava { JSONParser jsonP = new JSONParser(); try { JSONObject jsonO = (JSONObject)jsonP.parse(new FileReader("src/configuration/config.json")); - String test = (String) jsonO.get("test"); System.out.println("Name :"+ test); } catch (FileNotFoundException e) { diff --git a/src/engine/Engine.java b/src/engine/Engine.java index 536fa32..5bd7717 100644 --- a/src/engine/Engine.java +++ b/src/engine/Engine.java @@ -1,6 +1,7 @@ package engine; import engine.input.Input; +//import engine.input.gamepadInput; import engine.input.gamepadInput; import engine.math.*; import engine.object.*; @@ -173,12 +174,12 @@ public class Engine { soundManager.setListener(soundListener); -// SoundBuffer jumpSoundBuffer = new SoundBuffer("sound/jump.ogg"); EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff893802818, pid=1788, tid=4548 -// SoundSource soundSource = new SoundSource(true, false); -// soundSource.setBuffer(jumpSoundBuffer.getBufferId()); -// -// soundManager.addSoundSource("jump", soundSource); -// soundManager.playSoundSource("jump"); + SoundBuffer jumpSoundBuffer = new SoundBuffer("sound/jump.ogg"); + SoundSource soundSource = new SoundSource(true, false); + soundSource.setBuffer(jumpSoundBuffer.getBufferId()); + + soundManager.addSoundSource("jump", soundSource); + soundManager.playSoundSource("jump"); /* Engine Init @@ -217,7 +218,7 @@ public class Engine { // Game logic should fit here if (present) { //sprite //bindings - gamepadInput.gamepadInput(zangief, speed, buttonA, buttonB, buttonX, buttonY); + gamepadInput.gamepadInput(zangief, speed, buttonA, buttonB, buttonX, buttonY); System.out.println( " \n A :" + gamepadInput.buttonA_pressed + " \n B :" + gamepadInput.buttonB_pressed + @@ -225,7 +226,7 @@ public class Engine { " \n X :" + gamepadInput.buttonX_pressed); } - Input.keyboardInput(zangief, speed); +// Input.keyboardInput(zangief, speed); // input(smiley2, speed); /* diff --git a/src/engine/graphics/Texture.java b/src/engine/graphics/Texture.java index 4f06db9..15e5a19 100644 --- a/src/engine/graphics/Texture.java +++ b/src/engine/graphics/Texture.java @@ -1,6 +1,6 @@ package engine.graphics; -import engine.utils.BufferUtils; +import engine.utils.BufferUtilsEngine; import org.lwjgl.opengl.GL11; import java.awt.image.BufferedImage; @@ -49,7 +49,7 @@ public class Texture { glBindTexture(GL_TEXTURE_2D, result); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - GL11.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, BufferUtils.createIntBuffer(data)); + GL11.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, BufferUtilsEngine.createIntBuffer(data)); glGenerateMipmap(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); return result; diff --git a/src/engine/graphics/VertexArray.java b/src/engine/graphics/VertexArray.java index a8dc154..a3626be 100644 --- a/src/engine/graphics/VertexArray.java +++ b/src/engine/graphics/VertexArray.java @@ -1,6 +1,6 @@ package engine.graphics; -import engine.utils.BufferUtils; +import engine.utils.BufferUtilsEngine; import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.GL15.*; @@ -28,7 +28,7 @@ public class VertexArray { EBO = glGenBuffers(); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtils.createByteBuffer(indices), GL_STATIC_DRAW); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, BufferUtilsEngine.createByteBuffer(indices), GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); @@ -37,7 +37,7 @@ public class VertexArray { private void createVertexBufferObject(float[] vertices){ VBO = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, BufferUtils.createFloatBuffer(vertices), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BufferUtilsEngine.createFloatBuffer(vertices), GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0); glEnableVertexAttribArray(0); } @@ -45,7 +45,7 @@ public class VertexArray { private void createColorBufferObject(float[] color){ CBO = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, CBO); - glBufferData(GL_ARRAY_BUFFER, BufferUtils.createFloatBuffer(color), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BufferUtilsEngine.createFloatBuffer(color), GL_STATIC_DRAW); glVertexAttribPointer(1, 3, GL_FLOAT, false, 0, 0); glEnableVertexAttribArray(1); } @@ -53,19 +53,19 @@ public class VertexArray { private void createTextureBufferObject(float[] texture){ TBO = glGenBuffers(); glBindBuffer(GL_ARRAY_BUFFER, TBO); - glBufferData(GL_ARRAY_BUFFER, BufferUtils.createFloatBuffer(texture), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BufferUtilsEngine.createFloatBuffer(texture), GL_STATIC_DRAW); glVertexAttribPointer(2, 2, GL_FLOAT, false, 0, 0); glEnableVertexAttribArray(2); } public void swapVertexBufferObject(float[] vertices){ glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, BufferUtils.createFloatBuffer(vertices), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BufferUtilsEngine.createFloatBuffer(vertices), GL_STATIC_DRAW); } public void swapTextureBufferObject(float [] texture){ glBindBuffer(GL_ARRAY_BUFFER, TBO); - glBufferData(GL_ARRAY_BUFFER, BufferUtils.createFloatBuffer(texture), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BufferUtilsEngine.createFloatBuffer(texture), GL_STATIC_DRAW); } public void bind(){ diff --git a/src/engine/input/Input.java b/src/engine/input/Input.java index 9af2b1e..e734f2d 100644 --- a/src/engine/input/Input.java +++ b/src/engine/input/Input.java @@ -15,7 +15,6 @@ import static org.lwjgl.opengl.GL11.*; public class Input extends GLFWKeyCallback { public static boolean[] keys = new boolean[65536]; - public static boolean keyPressed = false; @Override public void invoke(long window, int key, int scancode, int action, int mods) { @@ -38,6 +37,9 @@ public class Input extends GLFWKeyCallback { assert gamepadAxes != null; assert gamepadButton != null; + String name = GLFW.glfwGetJoystickName(GLFW_JOYSTICK_1); + System.out.println("GamePad Name :" + name); + if (gamepadButton.get(0) ==1 ) { // appuie sur croix(PlayStation) A (Xbox) @@ -46,9 +48,9 @@ public class Input extends GLFWKeyCallback { if ( (gamepadAxes.get(2) < -0.1 || gamepadAxes.get(2) > 0.1) ) { // de droite à gauche //joystick gauche token.translate(new Vector3f (5 * speed * gamepadAxes.get(2), 0.0f, 0.0f)); if ( gamepadAxes.get(2) < -0.1 ){ - token.setTextureWrap(121,0,57,80, ObjectGl.STICK_TOP); + token.setTextureWrap(121,0,57,80, ObjectGl.DEFAULT); }else if (gamepadAxes.get(2) > 0.1) { - token.setTextureWrap(178,0,62,82, ObjectGl.STICK_TOP); + token.setTextureWrap(178,0,62,82, ObjectGl.DEFAULT); } } @@ -86,7 +88,7 @@ public class Input extends GLFWKeyCallback { } public static void keyboardInput(ObjectGl token, int speed) { - + boolean keyPressed = false; if (Input.isKeyDown(GLFW.GLFW_KEY_S)) { token.setTextureWrap(161,260,56,59, ObjectGl.STICK_BOTTOM); keyPressed = true; diff --git a/src/engine/math/Matrix4f.java b/src/engine/math/Matrix4f.java index 6291eb9..d3d2388 100644 --- a/src/engine/math/Matrix4f.java +++ b/src/engine/math/Matrix4f.java @@ -1,6 +1,6 @@ package engine.math; -import engine.utils.BufferUtils; +import engine.utils.BufferUtilsEngine; import java.nio.FloatBuffer; @@ -117,7 +117,7 @@ public class Matrix4f { } public FloatBuffer toFloatBuffer() { - return BufferUtils.createFloatBuffer(elements); + return BufferUtilsEngine.createFloatBuffer(elements); } } diff --git a/src/engine/sound/SoundBuffer.java b/src/engine/sound/SoundBuffer.java index 01cfa03..cfe1640 100644 --- a/src/engine/sound/SoundBuffer.java +++ b/src/engine/sound/SoundBuffer.java @@ -5,6 +5,7 @@ package engine.sound; +import engine.utils.FileUtils; import org.lwjgl.stb.STBVorbisInfo; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; @@ -13,7 +14,6 @@ import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.nio.ShortBuffer; -import static engine.utils.BufferUtils.StringToByteBuffer; import static org.lwjgl.openal.AL10.*; import static org.lwjgl.stb.STBVorbis.*; import static org.lwjgl.system.MemoryUtil.NULL; @@ -56,19 +56,19 @@ public class SoundBuffer { /** * Source : https://github.com/lwjglgamedev/lwjglbook/blob/master/chapter28/src/main/java/org/lwjglb/engine/sound/SoundBuffer.java * lis un fichier .ogg et le convertis en .pcm seul format lisible par openAl - * @param resource le fichier .ogg + * @param path chemin vers un fichier .ogg * @param info STBVorbisInfo * @return pcm * @throws Exception MemoryStack.stackPush() */ - private ShortBuffer readVorbis(String resource, STBVorbisInfo info) throws Exception { + private ShortBuffer readVorbis(String path, STBVorbisInfo info) throws Exception { try (MemoryStack stack = MemoryStack.stackPush()) { - vorbis = StringToByteBuffer(resource); + this.vorbis = FileUtils.loadAsByteBuffer(path); IntBuffer error = stack.mallocInt(1); long decoder = stb_vorbis_open_memory(vorbis, error, null); if (decoder == NULL) { throw new RuntimeException("Failed to open Ogg Vorbis file. Error: " + error.get(0)); - } + } //Failed to open Ogg Vorbis file. Error: 30 / 34 stb_vorbis_get_info(decoder, info); diff --git a/src/engine/utils/BufferUtils.java b/src/engine/utils/BufferUtilsEngine.java similarity index 83% rename from src/engine/utils/BufferUtils.java rename to src/engine/utils/BufferUtilsEngine.java index 50a2ddb..14ccc53 100644 --- a/src/engine/utils/BufferUtils.java +++ b/src/engine/utils/BufferUtilsEngine.java @@ -1,13 +1,16 @@ package engine.utils; +import java.io.IOException; +import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.nio.IntBuffer; +import java.nio.channels.FileChannel; -public class BufferUtils { +public class BufferUtilsEngine { - private BufferUtils() { + private BufferUtilsEngine() { } @@ -29,8 +32,4 @@ public class BufferUtils { return result; } - public static ByteBuffer StringToByteBuffer(String msg){ - return ByteBuffer.wrap(msg.getBytes()); - } - } diff --git a/src/engine/utils/FileUtils.java b/src/engine/utils/FileUtils.java index 4f82877..13d8017 100644 --- a/src/engine/utils/FileUtils.java +++ b/src/engine/utils/FileUtils.java @@ -1,9 +1,13 @@ package engine.utils; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; +import org.lwjgl.BufferUtils; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.channels.SeekableByteChannel; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; public class FileUtils { @@ -17,13 +21,27 @@ public class FileUtils { BufferedReader reader = new BufferedReader(new FileReader(file)); String buffer = ""; while ((buffer = reader.readLine()) != null) { - result.append(buffer +"\n"); + result.append(buffer).append("\n"); } reader.close(); } catch (IOException e){ e.printStackTrace(); + System.exit(1); } return result.toString(); } + public static ByteBuffer loadAsByteBuffer(String file) throws IOException{ + ByteBuffer buffer; + + Path path = Paths.get(file); + + try (SeekableByteChannel fc = Files.newByteChannel(path)) { + buffer = BufferUtils.createByteBuffer((int) fc.size() + 1); + while (fc.read(buffer) != -1) ; + } + + buffer.flip(); + return buffer; + } }