- An attempt at chase cam smoothing. needs work.

tags : #story[1273]
This commit is contained in:
Alistair McIntyre
2017-09-25 14:39:09 +13:00
parent a19e191684
commit e66abb4340
2 changed files with 46 additions and 3 deletions
@@ -17,16 +17,27 @@ public class ChaseCamera extends PerspectiveCamera implements RaceCamera {
private ObservableList<Transform> transforms;
private BoatObject playerBoat;
private ClientYacht playerYacht;
private Double zoomFactor;
public ChaseCamera() {
super(true);
transforms = this.getTransforms();
this.zoomFactor = -75.0;
}
public void setPlayerBoat(BoatObject playerBoat, ClientYacht playerYacht) {
this.playerBoat = playerBoat;
this.playerYacht = playerYacht;
this.playerYacht.getHeadingProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
Number newValue) {
repositionCamera();
}
});
this.playerBoat.layoutXProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue,
@@ -49,18 +60,32 @@ public class ChaseCamera extends PerspectiveCamera implements RaceCamera {
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), 0),
new Rotate(playerYacht.getHeading(), new Point3D(0, 0, 1)),
new Rotate(60, new Point3D(1, 0, 0)),
new Translate(0, 0, -75)
new Translate(0, 0, zoomFactor)
);
}
private void repositionCamera(Double newHeading) {
transforms.clear();
transforms.addAll(
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), 0),
new Rotate(newHeading, new Point3D(0, 0, 1)),
new Rotate(60, new Point3D(1, 0, 0)),
new Translate(0, 0, zoomFactor)
);
}
@Override
public void zoomIn() {
transforms.addAll(new Translate(0, 0, 1.5));
//transforms.addAll(new Translate(0, 0, 1.5));
this.zoomFactor += 5;
repositionCamera();
}
@Override
public void zoomOut() {
transforms.addAll(new Translate(0, 0, -1.5));
//transforms.addAll(new Translate(0, 0, -1.5));
this.zoomFactor -= 5;
repositionCamera();
}