mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
- Isometric Camera
- Zoom Bounds added. - Camera Panning Bounds added. Need to be tested with extra maps. tags : #story[1273]
This commit is contained in:
@@ -49,7 +49,6 @@ import seng302.visualiser.fxObjects.assets_3D.ModelType;
|
|||||||
public class GameView3D {
|
public class GameView3D {
|
||||||
|
|
||||||
private final double FOV = 60;
|
private final double FOV = 60;
|
||||||
private final double DEFAULT_CAMERA_DEPTH = -125;
|
|
||||||
private final double DEFAULT_CAMERA_X = 0;
|
private final double DEFAULT_CAMERA_X = 0;
|
||||||
private final double DEFAULT_CAMERA_Y = 155;
|
private final double DEFAULT_CAMERA_Y = 155;
|
||||||
|
|
||||||
@@ -96,8 +95,7 @@ public class GameView3D {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public GameView3D () {
|
public GameView3D () {
|
||||||
isometricCam = new IsometricCamera(DEFAULT_CAMERA_X, DEFAULT_CAMERA_Y,
|
isometricCam = new IsometricCamera(DEFAULT_CAMERA_X, DEFAULT_CAMERA_Y);
|
||||||
DEFAULT_CAMERA_DEPTH);
|
|
||||||
topDownCam = new TopDownCamera();
|
topDownCam = new TopDownCamera();
|
||||||
chaseCam = new ChaseCamera();
|
chaseCam = new ChaseCamera();
|
||||||
|
|
||||||
@@ -113,8 +111,6 @@ public class GameView3D {
|
|||||||
root3D, 1000, 1000, true, SceneAntialiasing.BALANCED
|
root3D, 1000, 1000, true, SceneAntialiasing.BALANCED
|
||||||
);
|
);
|
||||||
view.setCamera(isometricCam);
|
view.setCamera(isometricCam);
|
||||||
isometricCam.getTransforms()
|
|
||||||
.add(new Rotate(30, new Point3D(1, 0, 0))); //todo: move this into isometric cam?
|
|
||||||
|
|
||||||
gameObjects.getChildren().addAll(
|
gameObjects.getChildren().addAll(
|
||||||
ModelFactory.importModel(ModelType.OCEAN).getAssets(),
|
ModelFactory.importModel(ModelType.OCEAN).getAssets(),
|
||||||
|
|||||||
@@ -1,54 +1,101 @@
|
|||||||
package seng302.visualiser.cameras;
|
package seng302.visualiser.cameras;
|
||||||
|
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.geometry.Point3D;
|
||||||
import javafx.scene.PerspectiveCamera;
|
import javafx.scene.PerspectiveCamera;
|
||||||
|
import javafx.scene.transform.Rotate;
|
||||||
import javafx.scene.transform.Transform;
|
import javafx.scene.transform.Transform;
|
||||||
import javafx.scene.transform.Translate;
|
import javafx.scene.transform.Translate;
|
||||||
|
|
||||||
public class IsometricCamera extends PerspectiveCamera implements RaceCamera {
|
public class IsometricCamera extends PerspectiveCamera implements RaceCamera {
|
||||||
|
|
||||||
private final Double PAN_LIMIT = 50.0;
|
private final Double MIN_X = -120.0;
|
||||||
private final Double NEAR_ZOOM_LIMIT = -15.0;
|
private final Double MAX_X = 125.0;
|
||||||
private final Double FAR_ZOOM_LIMIT = -125.0;
|
|
||||||
|
|
||||||
private Double horizontalAdjustment;
|
private final Double MIN_Y = 40.0;
|
||||||
private Double verticalAdjustment;
|
private final Double MAX_Y = 170.0;
|
||||||
|
|
||||||
ObservableList<Transform> transforms;
|
private final Double PAN_LIMIT = 160.0;
|
||||||
|
private final Double NEAR_ZOOM_LIMIT = -50.0;
|
||||||
|
private final Double FAR_ZOOM_LIMIT = -160.0;
|
||||||
|
|
||||||
public IsometricCamera(Double cameraStartX, Double cameraStartY, Double cameraDepth) {
|
private Double horizontalPan;
|
||||||
|
private Double verticalPan;
|
||||||
|
private Double zoomFactor;
|
||||||
|
|
||||||
|
private ObservableList<Transform> transforms;
|
||||||
|
|
||||||
|
public IsometricCamera(Double cameraStartX, Double cameraStartY) {
|
||||||
super(true);
|
super(true);
|
||||||
transforms = this.getTransforms();
|
transforms = this.getTransforms();
|
||||||
transforms.addAll(new Translate(cameraStartX, cameraStartY, cameraDepth));
|
|
||||||
|
zoomFactor = (FAR_ZOOM_LIMIT + NEAR_ZOOM_LIMIT) / 2.0;
|
||||||
|
horizontalPan = cameraStartX;
|
||||||
|
verticalPan = cameraStartY;
|
||||||
|
|
||||||
|
updateCamera();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCamera() {
|
||||||
|
System.out.println("----");
|
||||||
|
System.out.println(horizontalPan);
|
||||||
|
System.out.println(verticalPan);
|
||||||
|
System.out.println("----");
|
||||||
|
transforms.clear();
|
||||||
|
transforms.addAll(
|
||||||
|
new Translate(horizontalPan, verticalPan, zoomFactor),
|
||||||
|
new Rotate(30, new Point3D(1, 0, 0))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void adjustZoomFactor(Double adjustment) {
|
||||||
|
if (zoomFactor + adjustment < NEAR_ZOOM_LIMIT && zoomFactor + adjustment > FAR_ZOOM_LIMIT) {
|
||||||
|
zoomFactor = zoomFactor + adjustment;
|
||||||
|
updateCamera();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void adjustVerticalPan(Double adjustment) {
|
||||||
|
if (verticalPan + adjustment >= MIN_Y && verticalPan + adjustment <= MAX_Y) {
|
||||||
|
verticalPan += adjustment;
|
||||||
|
updateCamera();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void adjustHorizontalPan(Double adjustment) {
|
||||||
|
if (horizontalPan + adjustment >= MIN_X && horizontalPan + adjustment <= MIN_Y) {
|
||||||
|
this.horizontalPan += adjustment;
|
||||||
|
updateCamera();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zoomIn() {
|
public void zoomIn() {
|
||||||
transforms.addAll(new Translate(0, 0, 1.5));
|
adjustZoomFactor(-2.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zoomOut() {
|
public void zoomOut() {
|
||||||
transforms.addAll(new Translate(0, 0, -1.5));
|
adjustZoomFactor(2.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void panLeft() {
|
public void panLeft() {
|
||||||
transforms.addAll(new Translate(-1, 0, 0));
|
adjustHorizontalPan(-2.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void panRight() {
|
public void panRight() {
|
||||||
transforms.addAll(new Translate(1, 0, 0));
|
adjustHorizontalPan(2.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void panUp() {
|
public void panUp() {
|
||||||
transforms.addAll(new Translate(0, -1, 0));
|
adjustVerticalPan(-2.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void panDown() {
|
public void panDown() {
|
||||||
transforms.addAll(new Translate(0, 1, 0));
|
adjustVerticalPan(2.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user