Replaced mark arrow listener with animation timer.
#story[1195]
This commit is contained in:
@@ -82,7 +82,7 @@ public class RaceController extends Controller {
|
|||||||
private ObservableList<Subject3D> viewSubjects;
|
private ObservableList<Subject3D> viewSubjects;
|
||||||
|
|
||||||
private Subject3D nextMarkArrow;
|
private Subject3D nextMarkArrow;
|
||||||
private ChangeListener<? super GPSCoordinate> pointToMark;
|
private AnimationTimer pointToMark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The arrow controller.
|
* The arrow controller.
|
||||||
@@ -367,17 +367,19 @@ public class RaceController extends Controller {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
VisualiserBoat boat = visualiserRace.getVisualiserRaceState().getBoat(subject3D.getSourceID());
|
VisualiserBoat boat = visualiserRace.getVisualiserRaceState().getBoat(subject3D.getSourceID());
|
||||||
this.pointToMark = (o, prev, curr) -> {
|
this.pointToMark = new AnimationTimer() {
|
||||||
CompoundMark target = boat.getCurrentLeg().getEndCompoundMark();
|
@Override
|
||||||
Bearing headingToMark = GPSCoordinate.calculateBearing(boat.getPosition(), target.getAverageGPSCoordinate());
|
public void handle(long now) {
|
||||||
|
CompoundMark target = boat.getCurrentLeg().getEndCompoundMark();
|
||||||
|
Bearing headingToMark = GPSCoordinate.calculateBearing(boat.getPosition(), target.getAverageGPSCoordinate());
|
||||||
|
|
||||||
nextMarkArrow.setX(view3D.getPivot().getX());
|
nextMarkArrow.setX(view3D.getPivot().getX());
|
||||||
nextMarkArrow.setY(view3D.getPivot().getY());
|
nextMarkArrow.setY(view3D.getPivot().getY());
|
||||||
nextMarkArrow.setZ(view3D.getPivot().getZ() + 10);
|
nextMarkArrow.setZ(view3D.getPivot().getZ() + 10);
|
||||||
nextMarkArrow.setHeading(headingToMark.degrees());
|
nextMarkArrow.setHeading(headingToMark.degrees());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
pointToMark.start();
|
||||||
boat.positionProperty().addListener(pointToMark);
|
|
||||||
} catch (BoatNotFoundException e) {
|
} catch (BoatNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -385,13 +387,7 @@ public class RaceController extends Controller {
|
|||||||
|
|
||||||
private void removeThirdPersonAnnotations(Subject3D subject3D) {
|
private void removeThirdPersonAnnotations(Subject3D subject3D) {
|
||||||
viewSubjects.remove(nextMarkArrow);
|
viewSubjects.remove(nextMarkArrow);
|
||||||
|
pointToMark.stop();
|
||||||
try {
|
|
||||||
VisualiserBoat boat = visualiserRace.getVisualiserRaceState().getBoat(subject3D.getSourceID());
|
|
||||||
boat.positionProperty().removeListener(pointToMark);
|
|
||||||
} catch (BoatNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user