mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
- Chase cam kind of working, need to find a fix for the abrupt direction change.
tags : #story[1273]
This commit is contained in:
@@ -438,16 +438,16 @@ public class GameView3D {
|
|||||||
((RaceCamera) view.getCamera()).zoomOut();
|
((RaceCamera) view.getCamera()).zoomOut();
|
||||||
break;
|
break;
|
||||||
case W:
|
case W:
|
||||||
view.getCamera().getTransforms().addAll(new Translate(0, -1, 0));
|
((RaceCamera) view.getCamera()).panUp();
|
||||||
break;
|
break;
|
||||||
case S:
|
case S:
|
||||||
view.getCamera().getTransforms().addAll(new Translate(0, 1, 0));
|
((RaceCamera) view.getCamera()).panDown();
|
||||||
break;
|
break;
|
||||||
case A:
|
case A:
|
||||||
view.getCamera().getTransforms().addAll(new Translate(-1, 0, 0));
|
((RaceCamera) view.getCamera()).panLeft();
|
||||||
break;
|
break;
|
||||||
case D:
|
case D:
|
||||||
view.getCamera().getTransforms().addAll(new Translate(1, 0, 0));
|
((RaceCamera) view.getCamera()).panRight();
|
||||||
break;
|
break;
|
||||||
case F1:
|
case F1:
|
||||||
if (view.getCamera().equals(camera)) {
|
if (view.getCamera().equals(camera)) {
|
||||||
@@ -499,7 +499,8 @@ public class GameView3D {
|
|||||||
|
|
||||||
if (clientYacht.getSourceId().equals(
|
if (clientYacht.getSourceId().equals(
|
||||||
ViewManager.getInstance().getGameClient().getServerThread().getClientId())) {
|
ViewManager.getInstance().getGameClient().getServerThread().getClientId())) {
|
||||||
((ChaseCamera) camera3).setPlayerBoat(newBoat);
|
((ChaseCamera) camera3).setPlayerBoat(newBoat, clientYacht);
|
||||||
|
((TopDownCamera) camera2).setPlayerBoat(newBoat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import javafx.scene.PerspectiveCamera;
|
|||||||
import javafx.scene.transform.Rotate;
|
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;
|
||||||
|
import seng302.model.ClientYacht;
|
||||||
import seng302.visualiser.fxObjects.assets_3D.BoatObject;
|
import seng302.visualiser.fxObjects.assets_3D.BoatObject;
|
||||||
|
|
||||||
|
|
||||||
@@ -15,45 +16,41 @@ public class ChaseCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
|
|
||||||
private ObservableList<Transform> transforms;
|
private ObservableList<Transform> transforms;
|
||||||
private BoatObject playerBoat;
|
private BoatObject playerBoat;
|
||||||
|
private ClientYacht playerYacht;
|
||||||
|
|
||||||
|
|
||||||
public ChaseCamera() {
|
public ChaseCamera() {
|
||||||
super(true);
|
super(true);
|
||||||
transforms = this.getTransforms();
|
transforms = this.getTransforms();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerBoat(BoatObject playerBoat) {
|
public void setPlayerBoat(BoatObject playerBoat, ClientYacht playerYacht) {
|
||||||
this.playerBoat = playerBoat;
|
this.playerBoat = playerBoat;
|
||||||
|
this.playerYacht = playerYacht;
|
||||||
this.playerBoat.layoutXProperty().addListener(new ChangeListener<Number>() {
|
this.playerBoat.layoutXProperty().addListener(new ChangeListener<Number>() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
||||||
Number newValue) {
|
Number newValue) {
|
||||||
updateCameraX((Double) oldValue, (Double) newValue);
|
repositionCamera();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.playerBoat.layoutYProperty().addListener(new ChangeListener<Number>() {
|
this.playerBoat.layoutYProperty().addListener(new ChangeListener<Number>() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
||||||
Number newValue) {
|
Number newValue) {
|
||||||
updateCameraY((Double) oldValue, (Double) newValue);
|
repositionCamera();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void repositionCamera() {
|
||||||
private void updateCameraX(Double oldXValue, Double newXValue) {
|
transforms.clear();
|
||||||
if (transforms.size() == 0) { // boat is placed and then moved at start,
|
transforms.addAll(
|
||||||
transforms.addAll(
|
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), 0),
|
||||||
new Translate(playerBoat.getLayoutX() - 30, playerBoat.getLayoutY() - 30, -125),
|
new Rotate(playerYacht.getHeading(), new Point3D(0, 0, 1)),
|
||||||
new Rotate(80, new Point3D(0, 0, 1))
|
new Rotate(60, new Point3D(1, 0, 0)),
|
||||||
);
|
new Translate(0, 0, -75)
|
||||||
} else {
|
);
|
||||||
transforms.addAll(new Translate(newXValue - oldXValue, 0, 0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateCameraY(Double oldYValue, Double newYValue) {
|
|
||||||
transforms.addAll(new Translate(0, (newYValue - oldYValue), 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,14 +1,18 @@
|
|||||||
package seng302.visualiser.cameras;
|
package seng302.visualiser.cameras;
|
||||||
|
|
||||||
|
|
||||||
|
import javafx.beans.value.ChangeListener;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.scene.PerspectiveCamera;
|
import javafx.scene.PerspectiveCamera;
|
||||||
import javafx.scene.transform.Transform;
|
import javafx.scene.transform.Transform;
|
||||||
import javafx.scene.transform.Translate;
|
import javafx.scene.transform.Translate;
|
||||||
|
import seng302.visualiser.fxObjects.assets_3D.BoatObject;
|
||||||
|
|
||||||
public class TopDownCamera extends PerspectiveCamera implements RaceCamera {
|
public class TopDownCamera extends PerspectiveCamera implements RaceCamera {
|
||||||
|
|
||||||
ObservableList<Transform> transforms;
|
private ObservableList<Transform> transforms;
|
||||||
|
private BoatObject playerBoat;
|
||||||
|
|
||||||
public TopDownCamera() {
|
public TopDownCamera() {
|
||||||
super(true);
|
super(true);
|
||||||
@@ -16,6 +20,39 @@ public class TopDownCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
transforms.add(new Translate(0, 0, -125));
|
transforms.add(new Translate(0, 0, -125));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlayerBoat(BoatObject playerBoat) {
|
||||||
|
this.playerBoat = playerBoat;
|
||||||
|
this.playerBoat.layoutXProperty().addListener(new ChangeListener<Number>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
||||||
|
Number newValue) {
|
||||||
|
updateCameraX((Double) oldValue, (Double) newValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.playerBoat.layoutYProperty().addListener(new ChangeListener<Number>() {
|
||||||
|
@Override
|
||||||
|
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
|
||||||
|
Number newValue) {
|
||||||
|
updateCameraY((Double) oldValue, (Double) newValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void updateCameraX(Double oldXValue, Double newXValue) {
|
||||||
|
if (transforms.size() == 0) { // boat is placed and then moved at start,
|
||||||
|
transforms.addAll(
|
||||||
|
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), -125)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
transforms.addAll(new Translate(newXValue - oldXValue, 0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCameraY(Double oldYValue, Double newYValue) {
|
||||||
|
transforms.addAll(new Translate(0, (newYValue - oldYValue), 0));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zoomIn() {
|
public void zoomIn() {
|
||||||
transforms.addAll(new Translate(0, 0, 1.5));
|
transforms.addAll(new Translate(0, 0, 1.5));
|
||||||
|
|||||||
Reference in New Issue
Block a user