diff --git a/GameEngine/resources/CameraView.png b/GameEngine/resources/CameraView.png new file mode 100644 index 0000000..1201f49 --- /dev/null +++ b/GameEngine/resources/CameraView.png Binary files differ diff --git a/GameEngine/resources/cameraFrameView.png b/GameEngine/resources/cameraFrameView.png index aef4e14..3487028 100644 --- a/GameEngine/resources/cameraFrameView.png +++ b/GameEngine/resources/cameraFrameView.png Binary files differ diff --git a/GameEngine/src/main/java/gameEngine/ConnectionManager.java b/GameEngine/src/main/java/gameEngine/ConnectionManager.java index c31296e..48122cc 100644 --- a/GameEngine/src/main/java/gameEngine/ConnectionManager.java +++ b/GameEngine/src/main/java/gameEngine/ConnectionManager.java @@ -4,10 +4,7 @@ import java.util.List; import gameEngine.entites.EditorEntity; -import gameEngine.entites.editorComponents.ComponentView; -import gameEngine.entites.editorComponents.Connection; -import gameEngine.entites.editorComponents.EntityView; -import gameEngine.entites.editorComponents.PortView; +import gameEngine.entites.editorComponents.*; import gameEngine.input.Input; import gameEngine.input.MouseInput; @@ -32,10 +29,14 @@ EditorEntity portParentA = pressedPort.getParent(); EditorEntity portParentB = port.getParent(); - if (portParentA.getEditorComponent(EntityView.class) != null) { - portParentA.ComponentConnections.add(portParentB.getEditorComponent(ComponentView.class).connectionType); - } else { - portParentB.ComponentConnections.add(portParentA.getEditorComponent(ComponentView.class).connectionType); + if (portParentA.getEditorComponent(EntityView.class) != null || portParentA.getEditorComponent(CameraView.class) != null) { + portParentA.ComponentConnections.add( + portParentB.getEditorComponent(ComponentView.class).connectionType + ); + } else if (portParentB.getEditorComponent(EntityView.class) != null || portParentB.getEditorComponent(CameraView.class) != null) { + portParentB.ComponentConnections.add( + portParentA.getEditorComponent(ComponentView.class).connectionType + ); } } } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/CameraView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/CameraView.java new file mode 100644 index 0000000..f02eaa0 --- /dev/null +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/CameraView.java @@ -0,0 +1,67 @@ +package gameEngine.entites.editorComponents; + +import gameEngine.entites.EditorEntity; +import gameEngine.geometry.Transform; +import gameEngine.input.Input; +import gameEngine.input.MouseInput; +import gameEngine.views.Sprite; +import gameEngine.views.Text; +import gameEngine.views.Window; +import org.joml.Vector3f; + +import java.util.ArrayList; +import java.util.List; + +public class CameraView extends DraggableComponent { + + private PortView portviewA; + public Sprite meshSprite; + + public CameraView(EditorEntity parent) { + this.parent = parent; + meshSprite = new Sprite(Window.resourcePath + "CameraFrameView.png"); + this.sprite = new Sprite(Window.resourcePath + "CameraView.png"); + this.text = new Text(parent.screenTransform.position.x, parent.screenTransform.position.y, "Camera", 14); + sprite.updateSpriteDimensions(); + portviewA = new PortView(PortView.PortType.IN, parent); + } + + @Override + protected void updatePortView(Vector3f actualPosition, Transform transform) { + Vector3f adjustedPos = new Vector3f(actualPosition.x - 30, actualPosition.y + 8, actualPosition.z); + portviewA.update(adjustedPos, transform.rotation, transform.scale); + portviewA.handleDragging(); + } + + @Override + protected void additionalUpdate(Vector3f actualPosition, Transform transform, Vector3f cameraPosition) { + if (meshSprite != null) { + meshSprite.setPosition(new Vector3f(actualPosition.x, actualPosition.y, actualPosition.z)); + meshSprite.setRotation(transform.rotation); + meshSprite.setScale(transform.scale); + meshSprite.update(); + } + } + @Override + public EditorComponent copy() { + return this; + } + + @Override + public List getConnectedComponentViews() { + List connectedComponentViews = new ArrayList<>(); + + for (PortView connectedPort : portviewA.getConnectedPorts()) { + EditorEntity parentEntity = connectedPort.getParent(); + + if (parentEntity != null) { + for (EditorComponent component : parentEntity.editorComponents) { + if (component instanceof ComponentView) { + connectedComponentViews.add((ComponentView) component); + } + } + } + } + return connectedComponentViews; + } +} \ No newline at end of file diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java index 4758fbe..6cc0649 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java @@ -40,12 +40,12 @@ Vector3f cameraPosition = Window.get().getScene().getCamera().getPosition(); Vector3f actualPosition = new Vector3f(screenTransform.position).sub(cameraPosition); - updateSprite(actualPosition, transform); - updateText(actualPosition, transform); - - //以下サブクラス固有処理 + //サブクラス固有処理 updatePortView(actualPosition, transform); additionalUpdate(actualPosition, transform, cameraPosition); + + updateSprite(actualPosition, transform); + updateText(actualPosition, transform); } private void updateSprite(Vector3f actualPosition, Transform transform){ diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index 6b937d4..161707f 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -7,6 +7,7 @@ import gameEngine.entites.Camera; import gameEngine.entites.EditorEntity; import gameEngine.entites.Entity; +import gameEngine.entites.editorComponents.CameraView; import gameEngine.entites.editorComponents.ComponentView; import gameEngine.entites.editorComponents.DraggableComponent; import gameEngine.entites.editorComponents.EntityView; @@ -41,6 +42,7 @@ resourceManager.addPath(Window.resourcePath + "enemy1.png"); resourceManager.addPath(Window.resourcePath + "enemy2.png"); System.out.println(resourceManager.getPathList()); + addCamera(); } @Override @@ -75,6 +77,16 @@ return editorEntity; } + public void addCamera() { + enqueueTask(this::addCameraView); + } + + private void addCameraView(){ + EditorEntity object = createEditorEntity(); + object.transform.setPosition(0 ,0, 0); + object.addEditorComponent(new CameraView(object)); + } + public void addNewEntity() { enqueueTask(this::addEntityView); }