Replaced camera tracking listeners with animation timer

- Documented animation timers and mark arrow

#story[1195]
main
Connor Taylor-Brown 8 years ago
parent b8c4582d2a
commit e354320d74

@ -81,7 +81,13 @@ public class RaceController extends Controller {
private View3D view3D;
private ObservableList<Subject3D> viewSubjects;
/**
* Arrow pointing to next mark in third person
*/
private Subject3D nextMarkArrow;
/**
* Animation loop for rotating mark arrow
*/
private AnimationTimer pointToMark;
/**

@ -1,5 +1,6 @@
package visualiser.layout;
import javafx.animation.AnimationTimer;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
@ -71,21 +72,9 @@ public class View3D extends Pane {
*/
private Rotate pitch;
/**
* Single listener for subject heading changes
* Animation loop for camera tracking
*/
private ChangeListener<? super Number> pivotHeading = (o, prev, curr) -> yaw.setAngle((double)curr);
/**
* Single listener for subject position (x) changes
*/
private ChangeListener<? super Number> pivotX = (o, prev, curr) -> pivot.setX((double)curr);
/**
* Single listener for subject position (y) changes
*/
private ChangeListener<? super Number> pivotY = (o, prev, curr) -> pivot.setY((double)curr);
/**
* Single listener for subject position (z) changes
*/
private ChangeListener<? super Number> pivotZ = (o, prev, curr) -> pivot.setZ((double)curr);
private AnimationTimer trackBoat;
/**
* Distance to switch from third person to bird's eye
*/
@ -219,10 +208,7 @@ public class View3D extends Pane {
*/
private void untrackSubject() {
if(target.get() != null) {
target.get().getPosition().xProperty().removeListener(pivotX);
target.get().getPosition().yProperty().removeListener(pivotY);
target.get().getPosition().zProperty().removeListener(pivotZ);
target.get().getHeading().angleProperty().removeListener(pivotHeading);
trackBoat.stop();
target.setValue(null);
}
}
@ -234,13 +220,14 @@ public class View3D extends Pane {
private void trackSubject(Subject3D subject) {
target.set(subject);
this.trackBoat = new AnimationTimer() {
@Override
public void handle(long now) {
updatePivot(target.get().getPosition());
setYaw(target.get().getHeading().getAngle());
target.get().getPosition().xProperty().addListener(pivotX);
target.get().getPosition().yProperty().addListener(pivotY);
target.get().getPosition().zProperty().addListener(pivotZ);
target.get().getHeading().angleProperty().addListener(pivotHeading);
}
};
trackBoat.start();
}
public void setNearClip(double nearClip) {

Loading…
Cancel
Save