diff --git a/GameEngine/pom.xml b/GameEngine/pom.xml index b6a4aff..4d99d29 100644 --- a/GameEngine/pom.xml +++ b/GameEngine/pom.xml @@ -89,6 +89,12 @@ joml ${joml.version} + + org.jetbrains + annotations + RELEASE + compile + \ No newline at end of file diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/ColorController.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/ColorController.java index 81bea9d..73d9ad0 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/ColorController.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/ColorController.java @@ -1,67 +1,47 @@ package gameEngine.entites.gameComponents; import gameEngine.input.*; +import gameEngine.views.Color; import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.opengl.GL11.*; public class ColorController extends GameComponent { - private float red; - private float green; - private float blue; + private Color color = new Color(0,0,0); public void init() { - System.out.println("in Component"); - this.setColor(0.0F, 0.0F, 0.0F); + color = Color.BLACK; } public void update() { if (Input.GetKey(GLFW_KEY_R)) { - this.setColor(1.0F, 0.0F, 0.0F); + color = Color.RED; System.out.println("R"); } if (Input.GetKeyUp(GLFW_KEY_G)) { - this.setColor(0.0F, 1.0F, 0.0F); + color = Color.GREEN; System.out.println("G"); } if (Input.GetKeyDown(GLFW_KEY_B)) { - this.setColor(0.0F, 0.0F, 1.0F); + color = Color.BLUE; System.out.println("B"); } if (Input.GetMouseButton(0)) { - setColor(1.0f, 0.0f, 0.0f); - System.out.println("Red"); + color = Color.CYAN; + System.out.println("CYAN"); } if (Input.GetMouseButtonUp(1)) { - setColor(0.0f, 0.0f, 1.0f); - System.out.println("Blue"); + color = Color.YELLOW; + System.out.println("YELLOW"); } if (Input.GetMouseButtonDown(2)) { - setColor(0.0f, 1.0f, 0.0f); - System.out.println("Green"); + color = Color.MAGENTA; + System.out.println("MAGENTA"); } - glClearColor(this.getRed(), this.getGreen(), this.getBlue(), 0.0F); - } - - public float getRed() { - return this.red; - } - - public float getGreen() { - return this.green; - } - - public float getBlue() { - return this.blue; - } - - public void setColor(float r, float g, float b) { - this.red = r; - this.green = g; - this.blue = b; + glClearColor(color.r, color.g, color.b, 0.0F); } diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java index 1f7c955..ea0bf8e 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java @@ -58,14 +58,24 @@ // テクスチャをバインド (テクスチャIDをOpenGLに設定) glBindTexture(GL_TEXTURE_2D, texture.getId()); + // 親のGameObjectの座標と回転を取得 + float x = parent.transform.position.x; + float y = parent.transform.position.y; + float rotationZ = parent.transform.rotation.z; + + // 回転の適用 + glTranslatef(x + spriteWidth / 2.0f, y + spriteHeight / 2.0f, 0); // 回転中心をスプライトの中心に + glRotatef(rotationZ, 0, 0, 1); // Z軸周りに回転 + glTranslatef(-(x + spriteWidth / 2.0f), -(y + spriteHeight / 2.0f), 0); // 元の位置に戻す + + // テクスチャの描画 + glEnable(GL_TEXTURE_2D); + glColor4f(1f, 1f, 1f, 1f); + // テクスチャを有効にして、イメージの座標とサイズを指定 glEnable(GL_TEXTURE_2D); // テクスチャを有効化 glColor4f(1f, 1f, 1f, 1f);// 色を白に設定 (テクスチャそのままの色で表示) - // 親のGameObjectの座標を取得 - float x = parent.transform.position.x; - float y = parent.transform.position.y; - // 四角形を描画 (テクスチャ座標と画面座標を対応付け) glBegin(GL_QUADS); // 四角形を描画する glTexCoord2f(0, 0); glVertex2f(x, y); // 左上の頂点 (テクスチャ座標0,0と画面座標) diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index 4a0aaa9..259d813 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -1,6 +1,7 @@ package gameEngine.scenes; import gameEngine.input.*; +import gameEngine.views.Color; import gameEngine.views.Window; import java.awt.event.KeyEvent; @@ -11,13 +12,9 @@ private boolean changingScene = false; private float timeToChangeScene = 2.0f; - public float r,g,b,a; + private final Color editorBackColor = new Color(1,1,1,0); public EditorScene(){ System.out.println("Active Editor scene"); - r = 1; - g = 1; - b = 1; - a = 0; } @Override @@ -30,14 +27,14 @@ if(changingScene && timeToChangeScene > 0){ timeToChangeScene -= dt; - r -= dt * 5.0f; - g -= dt * 5.0f; - b -= dt * 5.0f; + editorBackColor.r -= dt * 5.0f; + editorBackColor.g -= dt * 5.0f; + editorBackColor.b -= dt * 5.0f; } else if(changingScene){ Window.changeScene(1); } - glClearColor(r, g, b, a); + glClearColor(editorBackColor.r, editorBackColor.g, editorBackColor.b, editorBackColor.a); } } diff --git a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java index 21d40b6..fd2bba2 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java @@ -39,6 +39,15 @@ float x = gameObjects.get("sprite").transform.position.x; gameObjects.get("sprite").transform.setPosition(x + 1, gameObjects.get("sprite").transform.position.y, 0); } + + if (Input.GetKey(GLFW_KEY_LEFT)) { + float rotation = gameObjects.get("sprite").transform.rotation.z; + gameObjects.get("sprite").transform.setRotation(0, 0, rotation - 1); // 左回転 + } + if (Input.GetKey(GLFW_KEY_RIGHT)) { + float rotation = gameObjects.get("sprite").transform.rotation.z; + gameObjects.get("sprite").transform.setRotation(0, 0, rotation + 1); // 右回転 + } } } diff --git a/GameEngine/src/main/java/gameEngine/views/Color.java b/GameEngine/src/main/java/gameEngine/views/Color.java new file mode 100644 index 0000000..e3c9734 --- /dev/null +++ b/GameEngine/src/main/java/gameEngine/views/Color.java @@ -0,0 +1,26 @@ +package gameEngine.views; + +public class Color { + public float r,g,b,a; + + public Color(float r, float g, float b) { + this.r = r; + this.g = g; + this.b = b; + this.a = 1.0f; + } + public Color(float r, float g, float b, float a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + public static final Color RED = new Color(1, 0, 0); + public static final Color GREEN = new Color(0, 1, 0); + public static final Color BLUE = new Color(0, 0, 1); + public static final Color WHITE = new Color(0, 0, 0); + public static final Color BLACK = new Color(1, 1, 1); + public static final Color YELLOW = new Color(1, 1, 0); + public static final Color MAGENTA = new Color(1, 0, 1); + public static final Color CYAN = new Color(0, 1, 1); +}