diff --git a/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java b/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java index 5a99f90..2575b13 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java +++ b/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java @@ -26,7 +26,7 @@ Window window = Window.get(); GameEnginePresenter presenter = new GameEnginePresenter(window.getScene(), simulator); TimerService timerService = new TimerService(simulator); - window.run(); + window.runFromDTRAM(); } }; game.start(); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java index f3fc924..42ab124 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java @@ -9,6 +9,7 @@ import gameEngine.entites.*; import gameEngine.entites.gameComponents.*; import gameEngine.scenes.Scene; +import gameEngine.views.Sprite; import models.algebra.Expression; import models.algebra.Term; import models.dataConstraintModel.JsonTerm; @@ -180,8 +181,8 @@ Expression type = mesh.get("type"); if (type.toString().equals("\"sprite\"")) { String texturePath = mesh.get("sprite").toString().replace("\"", ""); - Mesh meshObj = new Mesh(gameObj, Mesh.MeshType.SPRITE, texturePath); - gameObj.addComponent(meshObj); + Sprite meshObj = new Sprite(texturePath); + //gameObj.addComponent(meshObj); SpriteReceiver nativeSpriteReceiver = new SpriteReceiver(meshObj); simulator.addNativeReceiver(nativeSpriteReceiver, spriteUpdateChannel, meshResource); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java index 2f50106..e19cbc7 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java @@ -1,6 +1,7 @@ package simulator.interfaces.gameEngine; import gameEngine.entites.gameComponents.Mesh; +import gameEngine.views.Sprite; import models.algebra.Expression; import models.algebra.Term; import simulator.Event; @@ -8,9 +9,9 @@ import simulator.interfaces.INativeReceiver; public class SpriteReceiver implements INativeReceiver { - private Mesh mesh; + private Sprite mesh; - public SpriteReceiver(Mesh mesh) { + public SpriteReceiver(Sprite mesh) { this.mesh = mesh; } diff --git a/GameEngine/src/main/java/Main.java b/GameEngine/src/main/java/Main.java index c309caf..2c9c264 100644 --- a/GameEngine/src/main/java/Main.java +++ b/GameEngine/src/main/java/Main.java @@ -3,6 +3,6 @@ public class Main { public static void main(String[] args) { Window window = Window.get(); - window.runWithEditor(); + window.runFromEditor(); } } \ No newline at end of file diff --git a/GameEngine/src/main/java/gameEngine/GameEditor.java b/GameEngine/src/main/java/gameEngine/GameEditor.java index 544c753..f30c2e5 100644 --- a/GameEngine/src/main/java/gameEngine/GameEditor.java +++ b/GameEngine/src/main/java/gameEngine/GameEditor.java @@ -9,6 +9,7 @@ public class GameEditor { private EditorScene scene; + private float windowWidth, windowHeight; private final String frameImagePath = "GameEngine/resources/EditorFrame.png"; private Sprite[] EditorFrameSprite = new Sprite[4]; @@ -25,16 +26,18 @@ private Button createEntityViewButton; private Text createEntityViewButtonText; - public GameEditor(Scene scene) { + public GameEditor(Scene scene, float windowWidth, float windowHeight) { this.scene = (EditorScene) scene; + this.windowWidth = windowWidth; + this.windowHeight = windowHeight; initializeEditorComponents(); } private void initializeEditorComponents() { createFrame(); - playButton = new Button(Window.get().width/ 2 -16 , 3, 1, 0.4f); - playButtonText = new Text(Window.get().width/ 2 - 11.25f, 1, "Play", 24); + playButton = new Button(windowWidth/ 2 -16 , 3, 1, 0.4f); + playButtonText = new Text(windowWidth/ 2 - 11.25f, 1, "Play", 24); createMeshComponentViewButton = new Button(20, 33, 3.2f, 0.5f); createMeshComponentViewButtonText = new Text(20 +5.25f, 30.4f, "Add Mesh", 24); @@ -82,7 +85,7 @@ private void createFrame(){ EditorFrameSprite[0] = new Sprite(frameImagePath, 0, 0, 20, 0.5f); EditorFrameSprite[1] = new Sprite(frameImagePath, 0, 0, 0.25f, 20); - EditorFrameSprite[2] = new Sprite(frameImagePath, Window.get().width-16, 0, 0.25f, 20); - EditorFrameSprite[3] = new Sprite(frameImagePath, 0, Window.get().height-16, 20, 0.5f); + EditorFrameSprite[2] = new Sprite(frameImagePath, windowWidth-16, 0, 0.25f, 20); + EditorFrameSprite[3] = new Sprite(frameImagePath, 0, windowHeight-16, 20, 0.5f); } } diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java index 05dd339..182e2fc 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java @@ -2,6 +2,7 @@ import gameEngine.ConnectionManager; import gameEngine.entites.Entity; +import gameEngine.scenes.EditorScene; import gameEngine.views.Sprite; import gameEngine.input.Input; import gameEngine.input.MouseInput; @@ -18,7 +19,8 @@ public PortView(PortType portType, Entity parent){ this.parent = parent; - connectionManager = Window.get().connectionManager; + EditorScene editorScene = (EditorScene) Window.get().getScene(); + this.connectionManager = editorScene.connectionManager; if(portType == PortType.IN){ this.sprite = new Sprite("GameEngine/resources/InPort.png"); } else if(portType == PortType.OUT){ diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index d34aba7..8b15577 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -1,5 +1,7 @@ package gameEngine.scenes; +import gameEngine.ConnectionManager; +import gameEngine.GameEditor; import gameEngine.entites.Entity; import gameEngine.entites.GameObject; import gameEngine.entites.gameComponents.ComponentView; @@ -15,8 +17,10 @@ public class EditorScene extends Scene { + private static GameEditor gameEditor; public HashMap editorEntities = new HashMap<>(); private Entity selectedEntity = null; + public ConnectionManager connectionManager = new ConnectionManager(); public Entity getEditorEntity(String eid) { return editorEntities.get(eid); @@ -28,20 +32,33 @@ editorEntities.remove(eid); } - public EditorScene(){ + public EditorScene(float windowWidth, float windowHeight){ System.out.println("Active Editor scene"); + gameEditor = new GameEditor(this, windowWidth, windowHeight); + gameEditor.setScene(this); glClearColor(1, 1, 1, 0); } - public EditorScene(HashMap editorEntities){ - this.editorEntities = editorEntities; - System.out.println("Active Editor scene"); - glClearColor(1, 1, 1, 0); - } +// public EditorScene(HashMap editorEntities){ +// this.editorEntities = editorEntities; +// System.out.println("Active Editor scene"); +// gameEditor = new GameEditor(this); +// gameEditor.setScene(this); +// glClearColor(1, 1, 1, 0); +// } @Override public void update(float dt) { updateDraggable(); changeScene(1, dt); //Gameシーンへの以降処理 + + connectionManager.update(); + for (Entity entity : editorEntities.values()) { + if (entity instanceof GameObject) { + GameObject gameObject = (GameObject) entity; + gameObject.updateComponents(); + } + } + gameEditor.update(); } private GameObject createGameObject(){ diff --git a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java index dfd933c..e956210 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java @@ -2,10 +2,7 @@ import gameEngine.entites.Entity; import gameEngine.entites.GameObject; -import gameEngine.entites.gameComponents.ComponentView; -import gameEngine.entites.gameComponents.EntityView; -import gameEngine.entites.gameComponents.Mesh; -import gameEngine.entites.gameComponents.MoveImage; +import gameEngine.entites.gameComponents.*; import java.util.HashMap; @@ -13,6 +10,11 @@ public class GameScene extends Scene { + public GameScene(){ + System.out.println("Active Game scene"); + glClearColor(1, 1, 1, 0); + } + public GameScene(HashMap editorEntities) { for(Entity EditorEntity : editorEntities.values()){ GameObject editorObject = (GameObject) EditorEntity; @@ -52,6 +54,15 @@ @Override public void update(float dt) { changeScene(0, dt); //Editorシーンへの以降処理 + for (Entity entity : entities.values()) { + if (entity instanceof GameObject) { + GameObject gameObject = (GameObject) entity; + if(gameObject.getComponent(EntityView.class) != null) continue; + if(gameObject.getComponent(ComponentView.class) != null) continue; + if(gameObject.getComponent(TextMesh.class) != null) continue; + gameObject.updateComponents(); + } + } } } diff --git a/GameEngine/src/main/java/gameEngine/views/Window.java b/GameEngine/src/main/java/gameEngine/views/Window.java index dba3a41..928eeb6 100644 --- a/GameEngine/src/main/java/gameEngine/views/Window.java +++ b/GameEngine/src/main/java/gameEngine/views/Window.java @@ -30,35 +30,28 @@ public int height; private String title; private long glfwWindow; - private static GameEditor gameEditor; - public ConnectionManager connectionManager = new ConnectionManager(); - private static HashMap editorEntities; + private EditorScene editorScene ; private Window() { this.width = 1200; this.height = 900; this.title = "HelloWorld"; init(); + editorScene = new EditorScene(width, height); } public static void changeScene(int newScene) { switch (newScene) { case 0: // EditorScene - if (editorEntities == null) { - currentScene = new EditorScene(); - } else { - currentScene = new EditorScene(editorEntities); - gameEditor.setScene(currentScene); - } - initializeSceneEntities(); + currentScene = window.editorScene; break; case 1: // GameScene EditorScene editorScene = (EditorScene) currentScene; - editorEntities = editorScene.editorEntities; - HashMap gameSceneEntities = new HashMap<>(editorEntities); - currentScene = new GameScene(gameSceneEntities); - initializeSceneEntities(); + if(editorScene != null && editorScene.editorEntities != null){ + currentScene = new GameScene(new HashMap<>(editorScene.editorEntities)); + } + else currentScene = new GameScene(); break; default: assert false : "Unknown Scene [" + newScene + "]"; @@ -66,15 +59,6 @@ } } - private static void initializeSceneEntities() { - for (Entity entity : currentScene.entities.values()) { - if (entity instanceof GameObject) { - GameObject gameObject = (GameObject) entity; - gameObject.initComponents(); // コンポーネントの初期化 - } - } - } - public static Window get() { if (window == null) { window = new Window(); @@ -83,15 +67,18 @@ return window; } - public void runWithEditor() { - //swingGameEditor = new SwingGameEditor(); + public void runFromEditor() { + Window.changeScene(0); run(); } - public void run() { + public void runFromDTRAM() { + Window.changeScene(1); + run(); + } + + private void run() { System.out.println("Hello LWJGL " + Version.getVersion() + "!"); - Window.changeScene(0); - gameEditor = new GameEditor(currentScene); loop(); glfwFreeCallbacks(glfwWindow); glfwDestroyWindow(glfwWindow); @@ -159,28 +146,6 @@ currentScene.update(dt); currentScene.processTasks(); - if(currentScene instanceof EditorScene) { - connectionManager.update(); - for (Entity entity : ((EditorScene) currentScene).editorEntities.values()) { - if (entity instanceof GameObject) { - GameObject gameObject = (GameObject) entity; - gameObject.updateComponents(); - } - } - gameEditor.update(); - } - else { - for (Entity entity : currentScene.entities.values()) { - if (entity instanceof GameObject) { - GameObject gameObject = (GameObject) entity; - if(gameObject.getComponent(EntityView.class) != null) continue; - if(gameObject.getComponent(ComponentView.class) != null) continue; - if(gameObject.getComponent(TextMesh.class) != null) continue; - gameObject.updateComponents(); - } - } - } - MouseInput.endFrame(); KeyInput.endFrame(); }