diff --git a/GameEngine/src/main/java/gameEngine/GameEditor.java b/GameEngine/src/main/java/gameEngine/GameEditor.java index f3baceb..a3fbdeb 100644 --- a/GameEngine/src/main/java/gameEngine/GameEditor.java +++ b/GameEngine/src/main/java/gameEngine/GameEditor.java @@ -3,7 +3,7 @@ import gameEngine.entites.Entity; import gameEngine.entites.GameObject; import gameEngine.entites.gameComponents.GameComponent; -import gameEngine.entites.gameComponents.MoveImage; +import gameEngine.entites.gameComponents.*; import gameEngine.scenes.*; import org.joml.Vector3f; @@ -27,6 +27,7 @@ private JTextField nameField; private Scene gameScene; private Timer updateTimer; + private JComboBox componentDropdown; private String lastLoadedName; private Vector3f lastLoadedPos, lastLoadedRot, lastLoadedScale; @@ -70,6 +71,7 @@ scaleXField = new JTextField(5); scaleYField = new JTextField(5); scaleZField = new JTextField(5); + componentDropdown = new JComboBox<>(new String[]{"ColorController", "CopyEntity", "MoveImage"}); addChangeListener(posXField, posYField, posZField, rotXField, rotYField, rotZField, scaleXField, scaleYField, scaleZField, nameField); @@ -105,6 +107,7 @@ setComponentBounds(newGameObjectButton, 200, 170, 110, 20); setComponentBounds(addComponentButton, 200, 260, 130, 20); setComponentBounds(removeComponentButton, 200, 290, 130, 20); + setComponentBounds(componentDropdown, 200, 225, 130, 20); // ドロップダウンの位置とサイズを設定 objectList.addListSelectionListener(e -> { if (!e.getValueIsAdjusting()) { // ユーザーが調整中でない場合のみ @@ -196,8 +199,22 @@ Entity selectedEntity = gameScene.getEntity(selectedObject); if (selectedEntity instanceof GameObject) { GameObject gameObject = (GameObject) selectedEntity; - System.out.println("仮でMeshコンポーネントを付与します"); - gameScene.addComponentToGameObject(gameObject, new MoveImage(gameObject)); + + String component = (String) componentDropdown.getSelectedItem(); + switch (component) { + case "ColorController": + gameScene.addComponentToGameObject(gameObject, new ColorController()); + break; + case "CopyEntity": + gameScene.addComponentToGameObject(gameObject, new CopyEntity(gameObject)); + break; + case "MoveImage": + gameScene.addComponentToGameObject(gameObject, new MoveImage(gameObject)); + break; + default: + JOptionPane.showMessageDialog(this, "Unknown Component Selected"); + break; + } // リストの更新 updateComponentList(gameObject); diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/MoveImage.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/MoveImage.java index 709af28..56db123 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/MoveImage.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/MoveImage.java @@ -79,9 +79,5 @@ if (rotation >= 360) rotation -= 360; entity.transform.setRotation(entity.transform.rotation.x, entity.transform.rotation.y, rotation); // 右回転 } - - if(Input.GetKeyDown(GLFW_KEY_G)){ - Window.currentScene.Instantiate((GameObject) entity); - } } } diff --git a/GameEngine/src/main/java/gameEngine/views/Window.java b/GameEngine/src/main/java/gameEngine/views/Window.java index 32c82d1..b77aa29 100644 --- a/GameEngine/src/main/java/gameEngine/views/Window.java +++ b/GameEngine/src/main/java/gameEngine/views/Window.java @@ -13,6 +13,7 @@ import java.nio.*; import java.util.HashMap; +import java.util.Map; import static org.lwjgl.glfw.Callbacks.*; import static org.lwjgl.glfw.GLFW.*; @@ -44,8 +45,10 @@ case 0: // EditorScene if (sceneEntities == null) { currentScene = new EditorScene(); + System.out.println("new"); } else { currentScene = new EditorScene(sceneEntities); + System.out.println(sceneEntities); // オリジナルのTransformを復元 for (Entity entity : currentScene.entities.values()) { entity.restoreOriginalTransform(); @@ -59,7 +62,10 @@ entity.saveOriginalTransform(); } sceneEntities = currentScene.entities; - currentScene = new GameScene(sceneEntities); + HashMap gameSceneEntities = new HashMap<>(sceneEntities); + + // コピーした entities を使って GameScene を作成 + currentScene = new GameScene(gameSceneEntities); initializeSceneEntities(); break; default: