diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java index 6cc0649..958de54 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/DraggableComponent.java @@ -135,9 +135,9 @@ parent.transform.setPosition(targetX, targetY, parent.transform.position.z); parent.screenTransform.setPosition( - parent.transform.position.x - cameraPosition.x, - parent.transform.position.y - cameraPosition.y, - parent.transform.position.z - cameraPosition.z + parent.transform.position.x, + parent.transform.position.y, + parent.transform.position.z ); if (isRightDrag) { @@ -156,9 +156,9 @@ ); componentParent.screenTransform.setPosition( - componentParent.transform.position.x - cameraPosition.x, - componentParent.transform.position.y - cameraPosition.y, - componentParent.transform.position.z - cameraPosition.z + componentParent.transform.position.x, + componentParent.transform.position.y, + componentParent.transform.position.z ); } } diff --git a/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java b/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java index c916fa1..befcd07 100644 --- a/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java +++ b/GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java @@ -2,8 +2,11 @@ import gameEngine.entites.Entity; import gameEngine.entites.GameObject; +import gameEngine.geometry.Transform; +import gameEngine.scenes.GameScene; import gameEngine.views.Color; import gameEngine.views.Sprite; +import gameEngine.views.Window; import org.joml.Vector3f; public class Mesh extends GameComponent { @@ -47,12 +50,14 @@ @Override public void update() { if (type == MeshType.SPRITE) { - Vector3f globalPosition = new Vector3f(parent.transform.position).add(localPosition); - sprite.setPosition(globalPosition); - Vector3f globalRotation = new Vector3f(parent.transform.rotation).add(localRotation); - sprite.setRotation(globalRotation); - Vector3f globalScale = new Vector3f(parent.transform.scale).add(localScale); - sprite.setScale(globalScale); + Transform transform = parent.transform; + Transform screenTransform = parent.screenTransform; + + Vector3f actualPosition = new Vector3f(screenTransform.position); + + sprite.setPosition(actualPosition); + sprite.setRotation(transform.rotation); + sprite.setScale(transform.scale); sprite.update(); } } diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index a4afd5f..b27dc64 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -88,14 +88,19 @@ object.addEditorComponent(new CameraView(object)); } + private EditorEntity createObject(){ + EditorEntity object = createEditorEntity(); + object.transform.setPosition(new Vector3f(centerPosition).add( + new Vector3f(editorCamera.getPosition().x,editorCamera.getPosition().y,editorCamera.getPosition().z))); + return object; + } + public void addNewEntity() { enqueueTask(this::addEntityView); } private void addEntityView(){ - EditorEntity object = createEditorEntity(); - object.transform.setPosition(new Vector3f(centerPosition).add(editorCamera.getPosition())); - System.out.println(editorCamera.getPosition()); + EditorEntity object = createObject(); object.addEditorComponent(new EntityView(object)); } @@ -104,8 +109,7 @@ } private void addMeshComponentView(){ - EditorEntity object = createEditorEntity(); - object.transform.setPosition(new Vector3f(centerPosition).add(editorCamera.getPosition())); + EditorEntity object = createObject(); object.addEditorComponent(new ComponentView(object, EditorEntity.Connectiontype.Mesh, resourceManager,"Mesh")); } @@ -114,8 +118,7 @@ } private void addMoveImageComponentView(){ - EditorEntity object = createEditorEntity(); - object.transform.setPosition(new Vector3f(centerPosition).add(editorCamera.getPosition())); + EditorEntity object = createObject(); object.addEditorComponent(new ComponentView(object, EditorEntity.Connectiontype.MoveImage, "MoveImage")); } @@ -124,8 +127,7 @@ } private void addMoveStraightComponentView(){ - EditorEntity object = createEditorEntity(); - object.transform.setPosition(new Vector3f(centerPosition).add(editorCamera.getPosition())); + EditorEntity object = createObject(); object.addEditorComponent(new ComponentView(object, EditorEntity.Connectiontype.MoveStraight, "MoveStraight")); } @@ -157,12 +159,11 @@ Vector3f cameraPosition = editorCamera.getPosition(); for (EditorEntity editorEntity : editorEntities.values()) { editorEntity.screenTransform.setPosition( - editorEntity.transform.position.x - cameraPosition.x, - editorEntity.transform.position.y - cameraPosition.y, + editorEntity.transform.position.x, + editorEntity.transform.position.y, editorEntity.transform.position.z ); } - System.out.println(editorCamera.transform.position); } ///---------------------------------------------------------------- /// 選択、ドラッグ処理 diff --git a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java index 6d15c23..d0cd68d 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java @@ -1,12 +1,15 @@ package gameEngine.scenes; import gameEngine.Time; +import gameEngine.entites.Camera; import gameEngine.entites.EditorEntity; import gameEngine.entites.Entity; import gameEngine.entites.GameObject; +import gameEngine.entites.editorComponents.CameraView; import gameEngine.entites.editorComponents.ComponentView; import gameEngine.entites.editorComponents.EntityView; import gameEngine.entites.gameComponents.*; +import org.joml.Vector3f; import java.util.HashMap; import java.util.Objects; @@ -15,14 +18,19 @@ public class GameScene extends Scene { + private Camera gameCamera; + public GameScene(){ this(null); } public GameScene(HashMap editorEntities) { + gameCamera = new Camera("001", Camera.ProjectionType.PERSPECTIVE); + setCamera(gameCamera); if(editorEntities != null){ for(EditorEntity editorEntity : editorEntities.values()){ if(editorEntity.getEditorComponent(EntityView.class) != null) addNewObject(editorEntity); + if(editorEntity.getEditorComponent(CameraView.class) != null) gameCamera.transform.setPosition(editorEntity.transform.position); } } System.out.println("Active Game scene"); @@ -49,7 +57,6 @@ for(EditorEntity.Connectiontype connectionType: editorEntity.ComponentConnections) { if(connectionType == EditorEntity.Connectiontype.Mesh){ - //接続しているComponentView for(ComponentView componentView: editorEntity.getEditorComponent(EntityView.class).getConnectedComponentViews()){ if(componentView.meshSprite != null) { if(Objects.equals(componentView.getSpritePath(), null)) continue; @@ -70,6 +77,7 @@ @Override public void update(float dt) { changeScene(0, dt); //Editorシーンへの以降処理 + reflectionCamera(); for (Entity entity : entities.values()) { if (entity instanceof GameObject) { GameObject gameObject = (GameObject) entity; @@ -78,4 +86,16 @@ } } } + + //カメラの反映を行う(座標調整等) + public void reflectionCamera(){ + Vector3f cameraPosition = gameCamera.getPosition(); + for (Entity entity : entities.values()) { + entity.screenTransform.setPosition( + entity.transform.position.x - cameraPosition.x, + entity.transform.position.y - cameraPosition.y, + entity.transform.position.z + ); + } + } }