diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java index 363d00f..cd78e00 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java @@ -79,12 +79,17 @@ } @Override - protected void draggingAction(float mouseX, float mouseY) { + protected void leftDraggingAction(float mouseX, float mouseY) { sprite.setPosition(mouseX - sprite.getDisplayedWidth() / 2, mouseY - sprite.getDisplayedHeight() / 2); } @Override + protected void rightDraggingAction(float mouseX, float mouseY) { + + } + + @Override public EditorComponent copy() { return this; } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/Draggable.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/Draggable.java index e453d7a..3c7e4f1 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/Draggable.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/Draggable.java @@ -1,7 +1,6 @@ package gameEngine.entites.editorComponents; import gameEngine.entites.EditorEntity; -import gameEngine.entites.Entity; import gameEngine.input.Input; import gameEngine.input.MouseInput; import gameEngine.scenes.EditorScene; @@ -10,7 +9,8 @@ public abstract class Draggable extends EditorComponent { protected EditorEntity parent; protected boolean isDraggable = true; - protected boolean isDragging = false; + protected boolean isLeftDragging = false; + protected boolean isRightDragging = false; public void setDraggable(boolean draggable) { this.isDraggable = draggable; @@ -25,21 +25,34 @@ if (scene.getSelectedEntity() == null) { if (Input.GetMouseButtonDown(0) && isMouseOver(mouseX, mouseY)) { - isDragging = true; + isLeftDragging = true; scene.setSelectedEntity(parent); // エンティティを選択 } + + if (Input.GetMouseButtonDown(1) && isMouseOver(mouseX, mouseY)) { + isRightDragging = true; + scene.setSelectedEntity(parent); + } } - if (isDragging && Input.GetMouseButton(0)) { - draggingAction(mouseX, mouseY); // ドラッグ中の処理 + if (isLeftDragging && Input.GetMouseButton(0)) { + leftDraggingAction(mouseX, mouseY); // ドラッグ中の処理 + } + if (isRightDragging && Input.GetMouseButton(1)) { + rightDraggingAction(mouseX, mouseY); // ドラッグ中の処理 } if (Input.GetMouseButtonUp(0)) { - isDragging = false; + isLeftDragging = false; + scene.clearSelectedObject(); // ドラッグ終了時に選択解除 + } + if (Input.GetMouseButtonUp(1)) { + isRightDragging = false; scene.clearSelectedObject(); // ドラッグ終了時に選択解除 } } protected abstract boolean isMouseOver(float mouseX, float mouseY); - protected abstract void draggingAction(float mouseX, float mouseY); + protected abstract void leftDraggingAction(float mouseX, float mouseY); + protected abstract void rightDraggingAction(float mouseX, float mouseY); } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EditorText.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EditorText.java index 1d987fd..5ffee1a 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EditorText.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EditorText.java @@ -62,10 +62,15 @@ } @Override - protected void draggingAction(float mouseX, float mouseY) { + protected void leftDraggingAction(float mouseX, float mouseY) { textRenderer.setPosition(mouseX, mouseY); } + @Override + protected void rightDraggingAction(float mouseX, float mouseY) { + + } + public void setText(String newText){ textRenderer.setText(newText); } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java index fae7f48..344dd5f 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java @@ -19,7 +19,7 @@ this.sprite = new Sprite(Window.resourcePath + "EntityView.png"); sprite.updateSpriteDimensions(); portviewA = new PortView(PortView.PortType.IN, parent); - portviewB = new PortView(PortView.PortType.IN, parent); + //portviewB = new PortView(PortView.PortType.IN, parent); } @Override @@ -52,11 +52,26 @@ } @Override - protected void draggingAction(float mouseX, float mouseY) { + protected void leftDraggingAction(float mouseX, float mouseY) { sprite.setPosition(mouseX - sprite.getDisplayedWidth() / 2, mouseY - sprite.getDisplayedHeight() / 2); } + @Override + protected void rightDraggingAction(float mouseX, float mouseY) { + float deltaX = mouseX - sprite.getDisplayedWidth() / 2 - sprite.position.x; + float deltaY = mouseY - sprite.getDisplayedHeight() / 2 - sprite.position.y; + sprite.setPosition(mouseX - sprite.getDisplayedWidth() / 2, + mouseY - sprite.getDisplayedHeight() / 2); + + List connectedComponents = getConnectedComponentViews(); + for (ComponentView component : connectedComponents) { + EditorEntity componentParent = component.parent; // ComponentViewのSprite取得 + componentParent.transform.setPosition(componentParent.transform.position.x + deltaX, + componentParent.transform.position.y + deltaY, componentParent.transform.position.z); + } + } + public PortView getPortView() { return portviewA; }