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<ComponentView> getConnectedComponentViews() { List<ComponentView> 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; } }