diff --git a/GameEngine/src/main/java/gameEngine/ConnectionManager.java b/GameEngine/src/main/java/gameEngine/ConnectionManager.java index 66fabec..8e3f740 100644 --- a/GameEngine/src/main/java/gameEngine/ConnectionManager.java +++ b/GameEngine/src/main/java/gameEngine/ConnectionManager.java @@ -3,13 +3,12 @@ import java.util.ArrayList; import java.util.List; -import gameEngine.entites.gameComponents.Connection; -import gameEngine.entites.gameComponents.PortView; +import gameEngine.entites.Entity; +import gameEngine.entites.GameObject; +import gameEngine.entites.gameComponents.*; import gameEngine.input.Input; import gameEngine.input.MouseInput; -import javax.sound.sampled.Port; - public class ConnectionManager { private List connections = new ArrayList<>(); private PortView pressedPort; @@ -23,6 +22,14 @@ System.out.println("Connect!"); Connection newConnection = new Connection(pressedPort, port); connections.add(newConnection); + + GameObject entityA = (GameObject) pressedPort.getParent(); + GameObject entityB = (GameObject) port.getParent(); + if(entityA.getComponent(EntityView.class) != null){ + entityA.ComponentConnections.add(entityB.getComponent(ComponentView.class).connectionType); + }else { + entityB.ComponentConnections.add(entityA.getComponent(ComponentView.class).connectionType); + } } pressedPort = null; } diff --git a/GameEngine/src/main/java/gameEngine/GameEditor.java b/GameEngine/src/main/java/gameEngine/GameEditor.java index 1e6662e..544c753 100644 --- a/GameEngine/src/main/java/gameEngine/GameEditor.java +++ b/GameEngine/src/main/java/gameEngine/GameEditor.java @@ -16,8 +16,11 @@ private Button playButton; private Text playButtonText; - private Button createComponentViewButton; - private Text createComponentViewButtonText; + private Button createMeshComponentViewButton; + private Text createMeshComponentViewButtonText; + + private Button createMoveImageComponentViewButton; + private Text createMoveImageComponentViewButtonText; private Button createEntityViewButton; private Text createEntityViewButtonText; @@ -33,8 +36,11 @@ playButton = new Button(Window.get().width/ 2 -16 , 3, 1, 0.4f); playButtonText = new Text(Window.get().width/ 2 - 11.25f, 1, "Play", 24); - createComponentViewButton = new Button(20, 33, 3.2f, 0.5f); - createComponentViewButtonText = new Text(20 +5.25f, 30.4f, "Add Component", 24); + createMeshComponentViewButton = new Button(20, 33, 3.2f, 0.5f); + createMeshComponentViewButtonText = new Text(20 +5.25f, 30.4f, "Add Mesh", 24); + + createMoveImageComponentViewButton = new Button(20, 73, 3.2f, 0.5f); + createMoveImageComponentViewButtonText = new Text(20 +5.25f, 70.4f, "Add MoveImage", 24); createEntityViewButton = new Button(240, 33, 3.2f, 0.5f); createEntityViewButtonText = new Text(240 +5.25f, 30.4f, "Add Entity", 24); @@ -46,8 +52,11 @@ playButton.clearListeners(); playButton.addListener(scene::changeSceneStart); - createComponentViewButton.clearListeners(); - createComponentViewButton.addListener(scene::addNewComponent); + createMeshComponentViewButton.clearListeners(); + createMeshComponentViewButton.addListener(scene::addNewMeshComponent); + + createMoveImageComponentViewButton.clearListeners(); + createMoveImageComponentViewButton.addListener(scene::addNewMoveImageComponent); createEntityViewButton.clearListeners(); createEntityViewButton.addListener(scene::addNewEntity); @@ -62,8 +71,10 @@ for(Sprite editorFrameSprites : EditorFrameSprite) editorFrameSprites.update(); playButton.update(); playButtonText.update(); - createComponentViewButton.update(); - createComponentViewButtonText.update(); + createMeshComponentViewButton.update(); + createMeshComponentViewButtonText.update(); + createMoveImageComponentViewButton.update(); + createMoveImageComponentViewButtonText.update(); createEntityViewButton.update(); createEntityViewButtonText.update(); } diff --git a/GameEngine/src/main/java/gameEngine/entites/GameObject.java b/GameEngine/src/main/java/gameEngine/entites/GameObject.java index d06d7b0..c172fc7 100644 --- a/GameEngine/src/main/java/gameEngine/entites/GameObject.java +++ b/GameEngine/src/main/java/gameEngine/entites/GameObject.java @@ -11,6 +11,8 @@ public class GameObject extends Entity { public final List gameComponents = new ArrayList<>(); + public enum Connectiontype {Mesh, MoveImage} + public List ComponentConnections = new ArrayList<>(); public GameObject(String id) { super(id); diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/ComponentView.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/ComponentView.java index 6ee4bc3..d623478 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/ComponentView.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/ComponentView.java @@ -1,18 +1,21 @@ package gameEngine.entites.gameComponents; import gameEngine.entites.Entity; +import gameEngine.entites.GameObject; import gameEngine.views.Sprite; import org.joml.Vector3f; public class ComponentView extends Draggable{ private Sprite sprite; + public GameObject.Connectiontype connectionType; private PortView portviewA; - public ComponentView(Entity entity){ + public ComponentView(Entity entity, GameObject.Connectiontype connectionType){ this.parent = entity; this.sprite = new Sprite("GameEngine/resources/ComponentView.png"); sprite.updateSpriteDimensions(); - portviewA = new PortView(PortView.PortType.OUT); + portviewA = new PortView(PortView.PortType.OUT, parent); + this.connectionType = connectionType; } @Override diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/EntityView.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/EntityView.java index 1590390..3414f18 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/EntityView.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/EntityView.java @@ -14,8 +14,8 @@ this.parent = entity; this.sprite = new Sprite("GameEngine/resources/EntityView.png"); sprite.updateSpriteDimensions(); - portviewA = new PortView(PortView.PortType.IN); - portviewB = new PortView(PortView.PortType.IN); + portviewA = new PortView(PortView.PortType.IN, parent); + portviewB = new PortView(PortView.PortType.IN, parent); } @Override diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java index 0d70849..05dd339 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/PortView.java @@ -1,6 +1,7 @@ package gameEngine.entites.gameComponents; import gameEngine.ConnectionManager; +import gameEngine.entites.Entity; import gameEngine.views.Sprite; import gameEngine.input.Input; import gameEngine.input.MouseInput; @@ -13,8 +14,10 @@ private ConnectionManager connectionManager; private Sprite sprite; private Vector3f position = new Vector3f(0,0,0); + private Entity parent; - public PortView(PortType portType){ + public PortView(PortType portType, Entity parent){ + this.parent = parent; connectionManager = Window.get().connectionManager; if(portType == PortType.IN){ this.sprite = new Sprite("GameEngine/resources/InPort.png"); @@ -59,4 +62,9 @@ } public PortType getPortType(){ return portType; } + + public Entity getParent() { + return parent; + } + } \ No newline at end of file diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index 8d26c44..d34aba7 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -65,19 +65,32 @@ object.getComponent(TextMesh.class).setLocalPosition(new Vector3f(0,-20,0)); } - public Runnable addNewComponent() { - enqueueTask(this::addComponentView); + public Runnable addNewMeshComponent() { + enqueueTask(this::addMeshComponentView); return null; } - private void addComponentView(){ + private void addMeshComponentView(){ GameObject object = createGameObject(); object.transform.setPosition((float) Window.get().width / 2 ,(float) Window.get().height /2, 0); - object.addComponent(new ComponentView(object)); + object.addComponent(new ComponentView(object, GameObject.Connectiontype.Mesh)); object.addComponent(new TextMesh(object, "Mesh", 20)); object.getComponent(TextMesh.class).setLocalPosition(new Vector3f(10,2,0)); } + public Runnable addNewMoveImageComponent() { + enqueueTask(this::addMoveImageComponentView); + return null; + } + + private void addMoveImageComponentView(){ + GameObject object = createGameObject(); + object.transform.setPosition((float) Window.get().width / 2 ,(float) Window.get().height /2, 0); + object.addComponent(new ComponentView(object, GameObject.Connectiontype.MoveImage)); + object.addComponent(new TextMesh(object, "MoveImage", 20)); + object.getComponent(TextMesh.class).setLocalPosition(new Vector3f(10,2,0)); + } + ///---------------------------------------------------------------- /// 選択、ドラッグ処理 ///---------------------------------------------------------------- diff --git a/GameEngine/src/main/java/gameEngine/scenes/Scene.java b/GameEngine/src/main/java/gameEngine/scenes/Scene.java index 6de3cf8..a769cc1 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/Scene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/Scene.java @@ -66,11 +66,15 @@ private void addNewGameObject(GameObject editorObject) { GameObject object = createGameObject(); object.transform.setPosition(editorObject.transform.position.x,editorObject.transform.position.y,0); - object.addComponent(new Mesh(object, Mesh.MeshType.SPRITE, "GameEngine/resources/0.png")); - if(editorObject.getComponent(ComponentView.class) != null) { + for(GameObject.Connectiontype connectionType: editorObject.ComponentConnections) { + if(connectionType == GameObject.Connectiontype.Mesh){ + object.addComponent(new Mesh(object, Mesh.MeshType.SPRITE, "GameEngine/resources/0.png")); + } + if(connectionType == GameObject.Connectiontype.MoveImage){ + object.addComponent(new MoveImage(object)); + } } - object.addComponent(new MoveImage(object)); } public void addComponentToGameObject(GameObject gameObject, GameComponent component) {