mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
- An attempt at chase cam smoothing. needs work.
tags : #story[1273]
This commit is contained in:
@@ -65,6 +65,7 @@ public class ClientYacht extends Observable {
|
|||||||
private ReadOnlyLongWrapper timeTillNextProperty = new ReadOnlyLongWrapper();
|
private ReadOnlyLongWrapper timeTillNextProperty = new ReadOnlyLongWrapper();
|
||||||
private ReadOnlyLongWrapper timeSinceLastMarkProperty = new ReadOnlyLongWrapper();
|
private ReadOnlyLongWrapper timeSinceLastMarkProperty = new ReadOnlyLongWrapper();
|
||||||
private ReadOnlyIntegerWrapper placingProperty = new ReadOnlyIntegerWrapper();
|
private ReadOnlyIntegerWrapper placingProperty = new ReadOnlyIntegerWrapper();
|
||||||
|
private ReadOnlyDoubleWrapper headingProperty = new ReadOnlyDoubleWrapper();
|
||||||
private Color colour;
|
private Color colour;
|
||||||
|
|
||||||
public ClientYacht(String boatType, Integer sourceId, String hullID, String shortName,
|
public ClientYacht(String boatType, Integer sourceId, String hullID, String shortName,
|
||||||
@@ -224,6 +225,7 @@ public class ClientYacht extends Observable {
|
|||||||
|
|
||||||
public void setHeading(Double heading) {
|
public void setHeading(Double heading) {
|
||||||
this.heading = heading;
|
this.heading = heading;
|
||||||
|
setHeadingProperty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -256,6 +258,7 @@ public class ClientYacht extends Observable {
|
|||||||
public void updateLocation(double lat, double lng, double heading, double velocity) {
|
public void updateLocation(double lat, double lng, double heading, double velocity) {
|
||||||
setLocation(lat, lng);
|
setLocation(lat, lng);
|
||||||
this.heading = heading;
|
this.heading = heading;
|
||||||
|
setHeadingProperty();
|
||||||
this.currentVelocity = velocity;
|
this.currentVelocity = velocity;
|
||||||
updateVelocityProperty(velocity);
|
updateVelocityProperty(velocity);
|
||||||
for (YachtLocationListener yll : locationListeners) {
|
for (YachtLocationListener yll : locationListeners) {
|
||||||
@@ -263,6 +266,15 @@ public class ClientYacht extends Observable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setHeadingProperty() {
|
||||||
|
Double oldHeading = getHeadingProperty().get();
|
||||||
|
Double currHeading = heading;
|
||||||
|
while (oldHeading.equals(currHeading)) {
|
||||||
|
oldHeading++;
|
||||||
|
headingProperty.set(oldHeading);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void addLocationListener(YachtLocationListener listener) {
|
public void addLocationListener(YachtLocationListener listener) {
|
||||||
locationListeners.add(listener);
|
locationListeners.add(listener);
|
||||||
}
|
}
|
||||||
@@ -299,4 +311,10 @@ public class ClientYacht extends Observable {
|
|||||||
public BoatObject getBoatObject() {
|
public BoatObject getBoatObject() {
|
||||||
return this.boatObject;
|
return this.boatObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ReadOnlyDoubleWrapper getHeadingProperty() {
|
||||||
|
|
||||||
|
return headingProperty;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,16 +17,27 @@ public class ChaseCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
private ObservableList<Transform> transforms;
|
private ObservableList<Transform> transforms;
|
||||||
private BoatObject playerBoat;
|
private BoatObject playerBoat;
|
||||||
private ClientYacht playerYacht;
|
private ClientYacht playerYacht;
|
||||||
|
private Double zoomFactor;
|
||||||
|
|
||||||
|
|
||||||
public ChaseCamera() {
|
public ChaseCamera() {
|
||||||
super(true);
|
super(true);
|
||||||
transforms = this.getTransforms();
|
transforms = this.getTransforms();
|
||||||
|
this.zoomFactor = -75.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerBoat(BoatObject playerBoat, ClientYacht playerYacht) {
|
public void setPlayerBoat(BoatObject playerBoat, ClientYacht playerYacht) {
|
||||||
this.playerBoat = playerBoat;
|
this.playerBoat = playerBoat;
|
||||||
this.playerYacht = playerYacht;
|
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>() {
|
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,
|
||||||
@@ -49,18 +60,32 @@ public class ChaseCamera extends PerspectiveCamera implements RaceCamera {
|
|||||||
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), 0),
|
new Translate(playerBoat.getLayoutX(), playerBoat.getLayoutY(), 0),
|
||||||
new Rotate(playerYacht.getHeading(), new Point3D(0, 0, 1)),
|
new Rotate(playerYacht.getHeading(), new Point3D(0, 0, 1)),
|
||||||
new Rotate(60, new Point3D(1, 0, 0)),
|
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
|
@Override
|
||||||
public void zoomIn() {
|
public void zoomIn() {
|
||||||
transforms.addAll(new Translate(0, 0, 1.5));
|
//transforms.addAll(new Translate(0, 0, 1.5));
|
||||||
|
this.zoomFactor += 5;
|
||||||
|
repositionCamera();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void zoomOut() {
|
public void zoomOut() {
|
||||||
transforms.addAll(new Translate(0, 0, -1.5));
|
//transforms.addAll(new Translate(0, 0, -1.5));
|
||||||
|
this.zoomFactor -= 5;
|
||||||
|
repositionCamera();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user