Merge branch 'master' into story1297_sails
# Conflicts: # racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java # racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java
This commit is contained in:
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectCodeStyleSettingsManager">
|
|
||||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -178,6 +178,15 @@ public class InGameLobbyController extends Controller {
|
|||||||
playerBoatToSet.setPitch(20);
|
playerBoatToSet.setPitch(20);
|
||||||
|
|
||||||
|
|
||||||
|
if (boat.isClientBoat()) {
|
||||||
|
Shockwave boatHighlight = new Shockwave(10);
|
||||||
|
boatHighlight.getMesh().setMaterial(new PhongMaterial(new Color(1, 1, 0, 0.1)));
|
||||||
|
boatHighlight.setX(subject.getPosition().getX());
|
||||||
|
boatHighlight.setY(subject.getPosition().getY());
|
||||||
|
boatHighlight.setZ(subject.getPosition().getZ());
|
||||||
|
subjects.add(boatHighlight);
|
||||||
|
subject.getMesh().toFront();
|
||||||
|
}
|
||||||
|
|
||||||
AnimationTimer rotate = new AnimationTimer() {
|
AnimationTimer rotate = new AnimationTimer() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -34,10 +34,7 @@ import visualiser.gameController.ControllerClient;
|
|||||||
import visualiser.gameController.Keys.ControlKey;
|
import visualiser.gameController.Keys.ControlKey;
|
||||||
import visualiser.gameController.Keys.KeyFactory;
|
import visualiser.gameController.Keys.KeyFactory;
|
||||||
import visualiser.layout.*;
|
import visualiser.layout.*;
|
||||||
import visualiser.model.Sparkline;
|
import visualiser.model.*;
|
||||||
import visualiser.model.VisualiserBoat;
|
|
||||||
import visualiser.model.VisualiserRaceEvent;
|
|
||||||
import visualiser.model.VisualiserRaceState;
|
|
||||||
import visualiser.utils.GPSConverter;
|
import visualiser.utils.GPSConverter;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -65,6 +62,8 @@ public class RaceViewController extends Controller {
|
|||||||
private String keyToPress;
|
private String keyToPress;
|
||||||
private View3D view3D;
|
private View3D view3D;
|
||||||
private ObservableList<Subject3D> viewSubjects;
|
private ObservableList<Subject3D> viewSubjects;
|
||||||
|
private ResizableRaceCanvas raceCanvas;
|
||||||
|
private boolean mapToggle = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Arrow pointing to next mark in third person
|
* Arrow pointing to next mark in third person
|
||||||
@@ -78,6 +77,7 @@ public class RaceViewController extends Controller {
|
|||||||
// note: it says it's not used but it is! do not remove :)
|
// note: it says it's not used but it is! do not remove :)
|
||||||
private @FXML ArrowController arrowController;
|
private @FXML ArrowController arrowController;
|
||||||
private @FXML GridPane canvasBase;
|
private @FXML GridPane canvasBase;
|
||||||
|
private @FXML GridPane canvasBase1;
|
||||||
private @FXML SplitPane racePane;
|
private @FXML SplitPane racePane;
|
||||||
private @FXML StackPane arrowPane;
|
private @FXML StackPane arrowPane;
|
||||||
private @FXML Label timer;
|
private @FXML Label timer;
|
||||||
@@ -111,6 +111,7 @@ public class RaceViewController extends Controller {
|
|||||||
tutorialCheck();
|
tutorialCheck();
|
||||||
initKeypressHandler();
|
initKeypressHandler();
|
||||||
initialiseRaceVisuals();
|
initialiseRaceVisuals();
|
||||||
|
initialiseRaceCanvas();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,6 +147,9 @@ public class RaceViewController extends Controller {
|
|||||||
// tab key
|
// tab key
|
||||||
if (codeString.equals("TAB")){toggleTable();}
|
if (codeString.equals("TAB")){toggleTable();}
|
||||||
|
|
||||||
|
//map key
|
||||||
|
if (codeString.equals("M")){bigMap();}
|
||||||
|
|
||||||
// any key pressed
|
// any key pressed
|
||||||
ControlKey controlKey = keyFactory.getKey(codeString);
|
ControlKey controlKey = keyFactory.getKey(codeString);
|
||||||
if(controlKey != null) {
|
if(controlKey != null) {
|
||||||
@@ -297,6 +301,23 @@ public class RaceViewController extends Controller {
|
|||||||
|
|
||||||
viewSubjects.add(markModel);
|
viewSubjects.add(markModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) {
|
||||||
|
if (boat.isClientBoat()) {
|
||||||
|
Shockwave boatHighlight = new Shockwave(10);
|
||||||
|
boatHighlight.getMesh().setMaterial(new PhongMaterial(new Color(1, 1, 0, 0.1)));
|
||||||
|
viewSubjects.add(boatHighlight);
|
||||||
|
AnimationTimer highlightTrack = new AnimationTimer() {
|
||||||
|
@Override
|
||||||
|
public void handle(long now) {
|
||||||
|
boatHighlight.setX(gpsConverter.convertGPS(boat.getPosition()).getX());
|
||||||
|
boatHighlight.setZ(gpsConverter.convertGPS(boat.getPosition()).getY());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
highlightTrack.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Position and add each boat to view
|
// Position and add each boat to view
|
||||||
for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) {
|
for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) {
|
||||||
/*if(boat.getSourceID() == race.getVisualiserRaceState().getPlayerBoatID()) {
|
/*if(boat.getSourceID() == race.getVisualiserRaceState().getPlayerBoatID()) {
|
||||||
@@ -684,6 +705,8 @@ public class RaceViewController extends Controller {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
raceCanvas.drawRace();
|
||||||
|
|
||||||
boatInfoTable.sort();
|
boatInfoTable.sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -811,4 +834,48 @@ public class RaceViewController extends Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialises the map
|
||||||
|
*/
|
||||||
|
private void initialiseRaceCanvas() {
|
||||||
|
|
||||||
|
//Create canvas.
|
||||||
|
raceCanvas = new ResizableRaceCanvas(raceState);
|
||||||
|
|
||||||
|
//Set properties.
|
||||||
|
raceCanvas.setMouseTransparent(true);
|
||||||
|
raceCanvas.widthProperty().bind(canvasBase1.widthProperty());
|
||||||
|
raceCanvas.heightProperty().bind(canvasBase1.heightProperty());
|
||||||
|
|
||||||
|
//Draw it and show it.
|
||||||
|
raceCanvas.draw();
|
||||||
|
raceCanvas.setVisible(true);
|
||||||
|
|
||||||
|
//Add to scene.
|
||||||
|
canvasBase1.getChildren().add(0, raceCanvas);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void bigMap(){
|
||||||
|
if (mapToggle){
|
||||||
|
raceCanvas.widthProperty().bind(canvasBase.widthProperty());
|
||||||
|
raceCanvas.heightProperty().bind(canvasBase.heightProperty());
|
||||||
|
|
||||||
|
raceCanvas.setFullScreen(true);
|
||||||
|
raceCanvas.setOpacity(0.6);
|
||||||
|
|
||||||
|
canvasBase1.getChildren().remove(raceCanvas);
|
||||||
|
canvasBase.getChildren().add(1, raceCanvas);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
raceCanvas.widthProperty().bind(canvasBase1.widthProperty());
|
||||||
|
raceCanvas.heightProperty().bind(canvasBase1.heightProperty());
|
||||||
|
|
||||||
|
raceCanvas.setFullScreen(false);
|
||||||
|
|
||||||
|
canvasBase.getChildren().remove(raceCanvas);
|
||||||
|
canvasBase1.getChildren().add(0, raceCanvas);
|
||||||
|
}
|
||||||
|
mapToggle = !mapToggle;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ public class Shockwave extends Subject3D {
|
|||||||
super(new Cylinder(radius,0),0);
|
super(new Cylinder(radius,0),0);
|
||||||
getMesh().getTransforms().add(new Rotate(-90, Rotate.X_AXIS));
|
getMesh().getTransforms().add(new Rotate(-90, Rotate.X_AXIS));
|
||||||
getMesh().setMaterial(new PhongMaterial(new Color(0,0,0,0)));
|
getMesh().setMaterial(new PhongMaterial(new Color(0,0,0,0)));
|
||||||
|
getMesh().setMouseTransparent(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,13 +6,11 @@ import javafx.scene.paint.Color;
|
|||||||
import javafx.scene.paint.Paint;
|
import javafx.scene.paint.Paint;
|
||||||
import javafx.scene.text.Font;
|
import javafx.scene.text.Font;
|
||||||
import javafx.scene.transform.Rotate;
|
import javafx.scene.transform.Rotate;
|
||||||
import network.Messages.Enums.BoatStatusEnum;
|
|
||||||
import shared.dataInput.RaceDataSource;
|
import shared.dataInput.RaceDataSource;
|
||||||
import shared.enums.RoundingType;
|
import shared.enums.RoundingType;
|
||||||
import shared.model.*;
|
import shared.model.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,13 +42,15 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
private VisualiserRaceState raceState;
|
private VisualiserRaceState raceState;
|
||||||
|
|
||||||
|
|
||||||
private boolean annoName = true;
|
private boolean annoName = false;
|
||||||
private boolean annoAbbrev = true;
|
private boolean annoAbbrev = true;
|
||||||
private boolean annoSpeed = true;
|
private boolean annoSpeed = false;
|
||||||
private boolean annoPath = true;
|
private boolean annoPath = true;
|
||||||
private boolean annoEstTime = true;
|
private boolean annoEstTime = false;
|
||||||
private boolean annoTimeSinceLastMark = true;
|
private boolean annoTimeSinceLastMark = false;
|
||||||
private boolean annoGuideLine = false;
|
private boolean annoGuideLine = true;
|
||||||
|
|
||||||
|
private boolean isFullScreen = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -293,7 +293,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
|
|
||||||
List<VisualiserBoat> boats = new ArrayList<>(raceState.getBoats());
|
List<VisualiserBoat> boats = new ArrayList<>(raceState.getBoats());
|
||||||
//Sort to ensure we draw boats in consistent order.
|
//Sort to ensure we draw boats in consistent order.
|
||||||
boats.sort(Comparator.comparingInt(Boat::getSourceID));
|
// boats.sort(Comparator.comparingInt(Boat::getSourceID));
|
||||||
|
|
||||||
//Current draw order:
|
//Current draw order:
|
||||||
// track points
|
// track points
|
||||||
@@ -302,29 +302,29 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
// text
|
// text
|
||||||
|
|
||||||
//Track points.
|
//Track points.
|
||||||
|
if (isFullScreen){
|
||||||
for (VisualiserBoat boat : boats) {
|
for (VisualiserBoat boat : boats) {
|
||||||
drawTrack(boat);
|
drawTrack(boat);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Wake.
|
|
||||||
for (VisualiserBoat boat : boats) {
|
|
||||||
//Only draw wake if they are currently racing.
|
|
||||||
if (boat.getStatus() == BoatStatusEnum.RACING) {
|
|
||||||
drawWake(boat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Boat.
|
|
||||||
for (VisualiserBoat boat : boats) {
|
|
||||||
drawBoat(boat);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Text.
|
//Text.
|
||||||
for (VisualiserBoat boat : boats) {
|
for (VisualiserBoat boat : boats) {
|
||||||
drawBoatText(boat);
|
drawBoatText(boat);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Wake.
|
||||||
|
// for (VisualiserBoat boat : boats) {
|
||||||
|
// //Only draw wake if they are currently racing.
|
||||||
|
// if (boat.getStatus() == BoatStatusEnum.RACING) {
|
||||||
|
// drawWake(boat);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
//Boat.
|
||||||
|
for (VisualiserBoat boat : boats) {
|
||||||
|
drawBoat(boat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -364,9 +364,9 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
gc.fillPolygon(x, y, x.length);
|
gc.fillPolygon(x, y, x.length);
|
||||||
gc.restore();
|
gc.restore();
|
||||||
|
|
||||||
if (boat.getSourceID() == ThisBoat.getInstance().getSourceID()) {
|
// if (boat.getSourceID() == ThisBoat.getInstance().getSourceID()) {
|
||||||
drawSails(boat);
|
// drawSails(boat);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -605,7 +605,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
|
|
||||||
//Prepare to draw.
|
//Prepare to draw.
|
||||||
gc.setLineWidth(1);
|
gc.setLineWidth(1);
|
||||||
gc.setFill(Color.AQUA);
|
gc.setFill(Color.DEEPSKYBLUE);
|
||||||
|
|
||||||
|
|
||||||
//Calculate the screen coordinates of the boundary.
|
//Calculate the screen coordinates of the boundary.
|
||||||
@@ -645,19 +645,23 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
//Race boundary.
|
//Race boundary.
|
||||||
drawBoundary();
|
drawBoundary();
|
||||||
|
|
||||||
//Guiding Line
|
//rounding lines
|
||||||
if (annoGuideLine){
|
if (isFullScreen){
|
||||||
|
drawRoundingLines();
|
||||||
drawRaceLine();
|
drawRaceLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Guiding Line
|
||||||
|
// if (annoGuideLine){
|
||||||
|
// drawRaceLine();
|
||||||
|
// }
|
||||||
|
|
||||||
//Boats.
|
//Boats.
|
||||||
drawBoats();
|
drawBoats();
|
||||||
|
|
||||||
//Marks.
|
//Marks.
|
||||||
drawMarks();
|
drawMarks();
|
||||||
|
|
||||||
//TEMP
|
|
||||||
drawRoundingLines();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -752,7 +756,8 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
gc.save();
|
gc.save();
|
||||||
|
|
||||||
gc.setLineWidth(2);
|
gc.setLineWidth(2);
|
||||||
gc.setStroke(Color.MEDIUMAQUAMARINE);
|
gc.setStroke(getLineColor(legs.get(index)));
|
||||||
|
|
||||||
|
|
||||||
gc.beginPath();
|
gc.beginPath();
|
||||||
gc.moveTo(startPath.getX(), startPath.getY());
|
gc.moveTo(startPath.getX(), startPath.getY());
|
||||||
@@ -772,7 +777,7 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
gc.save();
|
gc.save();
|
||||||
|
|
||||||
gc.setLineWidth(2);
|
gc.setLineWidth(2);
|
||||||
gc.setStroke(Color.MEDIUMAQUAMARINE);
|
gc.setStroke(getLineColor(legs.get(index)));
|
||||||
|
|
||||||
gc.beginPath();
|
gc.beginPath();
|
||||||
gc.moveTo(startPath.getX(), startPath.getY());
|
gc.moveTo(startPath.getX(), startPath.getY());
|
||||||
@@ -788,6 +793,21 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Color getLineColor(Leg leg) {
|
||||||
|
for (VisualiserBoat boat : raceState.getBoats()) {
|
||||||
|
if (boat.isClientBoat()) {
|
||||||
|
if (boat.getCurrentLeg() == leg) {
|
||||||
|
return Color.ORANGE;
|
||||||
|
} else {
|
||||||
|
return Color.MEDIUMAQUAMARINE;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return Color.MEDIUMAQUAMARINE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Color.MEDIUMAQUAMARINE;
|
||||||
|
}
|
||||||
|
|
||||||
private void drawArrowHead(GPSCoordinate start, GPSCoordinate end){
|
private void drawArrowHead(GPSCoordinate start, GPSCoordinate end){
|
||||||
|
|
||||||
GraphCoordinate lineStart = this.map.convertGPS(start);
|
GraphCoordinate lineStart = this.map.convertGPS(start);
|
||||||
@@ -862,6 +882,11 @@ public class ResizableRaceCanvas extends ResizableCanvas {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFullScreen() {
|
||||||
|
return isFullScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullScreen(boolean fullScreen) {
|
||||||
|
isFullScreen = fullScreen;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,6 +137,9 @@ public class VisualiserBoat extends Boat {
|
|||||||
//Update the nextValidTime for the next track point.
|
//Update the nextValidTime for the next track point.
|
||||||
nextValidTime = currentTimeMilli + trackPointTimeInterval;
|
nextValidTime = currentTimeMilli + trackPointTimeInterval;
|
||||||
|
|
||||||
|
if (track.size() > trackPointLimit) {
|
||||||
|
track.remove(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,30 +79,89 @@
|
|||||||
</Accordion>
|
</Accordion>
|
||||||
</children>
|
</children>
|
||||||
</Pane>
|
</Pane>
|
||||||
<Label fx:id="timer" maxHeight="20.0" text="0:0" AnchorPane.bottomAnchor="0.0" AnchorPane.rightAnchor="0.0">
|
<Label fx:id="timer" alignment="CENTER" maxHeight="20.0" mouseTransparent="true" text="0:0">
|
||||||
<font>
|
<font>
|
||||||
<Font name="System Bold" size="15.0" />
|
<Font name="System Bold" size="15.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="FPS" text="FPS: 0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0">
|
<Label fx:id="FPS" mouseTransparent="true" text="FPS: 0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<font>
|
|
||||||
<Font name="System Bold" size="15.0" />
|
|
||||||
</font>
|
|
||||||
</Label>
|
|
||||||
<Label fx:id="timeZone" text="Label" AnchorPane.bottomAnchor="0.0" AnchorPane.rightAnchor="0.0">
|
|
||||||
<font>
|
<font>
|
||||||
<Font name="System Bold" size="15.0" />
|
<Font name="System Bold" size="15.0" />
|
||||||
</font>
|
</font>
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="20.0" />
|
<Insets top="20.0" />
|
||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
|
<Label fx:id="timeZone" mouseTransparent="true" text="Label" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<font>
|
||||||
|
<Font name="System Bold" size="15.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
<StackPane fx:id="arrowPane" alignment="TOP_RIGHT" mouseTransparent="true" prefHeight="150.0" prefWidth="150.0" snapToPixel="false" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<StackPane fx:id="arrowPane" alignment="TOP_RIGHT" mouseTransparent="true" prefHeight="150.0" prefWidth="150.0" snapToPixel="false" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
<fx:include fx:id="arrow" source="arrow.fxml" />
|
<fx:include fx:id="arrow" source="arrow.fxml" />
|
||||||
</children>
|
</children>
|
||||||
</StackPane>
|
</StackPane>
|
||||||
<Label fx:id="tutorialText" alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" style="-fx-border-color: orange; -fx-border-radius: 5px; -fx-background-color: #ffffcc; -fx-text-fill: #3399ff; -fx-border-width: 3; -fx-border-insets: -3;" text="This is the tutorial text" visible="false" AnchorPane.leftAnchor="150.0" AnchorPane.rightAnchor="150.0" AnchorPane.topAnchor="100.0" />
|
<Label fx:id="tutorialText" alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" style="-fx-border-color: orange; -fx-border-radius: 5px; -fx-background-color: #ffffcc; -fx-text-fill: #3399ff; -fx-border-width: 3; -fx-border-insets: -3;" text="This is the tutorial text" visible="false" AnchorPane.leftAnchor="150.0" AnchorPane.rightAnchor="150.0" AnchorPane.topAnchor="100.0" />
|
||||||
|
<AnchorPane maxHeight="200.0" maxWidth="200.0" mouseTransparent="true" opacity="0.6" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0">
|
||||||
|
<children>
|
||||||
|
<AnchorPane maxHeight="200.0" maxWidth="200.0" prefHeight="200.0" prefWidth="216.0">
|
||||||
|
<children>
|
||||||
|
<GridPane fx:id="canvasBase1" maxHeight="200.0" maxWidth="200.0" prefHeight="200.0" prefWidth="216.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
</GridPane>
|
||||||
|
<Pane maxHeight="200.0" maxWidth="200.0" prefHeight="200.0" prefWidth="216.0" visible="false">
|
||||||
|
<children>
|
||||||
|
<Accordion>
|
||||||
|
<panes>
|
||||||
|
<TitledPane animated="false" prefHeight="395.0" prefWidth="222.0" text="Annotation Control">
|
||||||
|
<content>
|
||||||
|
<AnchorPane fx:id="annotationPane1" minHeight="0.0" minWidth="0.0">
|
||||||
|
<children>
|
||||||
|
<CheckBox fx:id="showName1" layoutY="39.0" mnemonicParsing="false" selected="true" text="Show Boat Name" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
<CheckBox fx:id="showAbbrev1" layoutY="61.0" mnemonicParsing="false" selected="true" text="Show Boat Abbreviation" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="25.0" />
|
||||||
|
<CheckBox fx:id="showSpeed1" layoutY="90.0" mnemonicParsing="false" selected="true" text="Show Boat Speed" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="50.0" />
|
||||||
|
<CheckBox fx:id="showBoatPath1" mnemonicParsing="false" selected="true" text="Show Boat Paths" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="75.0" />
|
||||||
|
<CheckBox fx:id="showTime1" mnemonicParsing="false" selected="true" text="Show Boat Leg Time" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="100.0" />
|
||||||
|
<CheckBox fx:id="showEstTime1" mnemonicParsing="false" selected="true" text="Show Est. Time to Next Mark" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="125.0" />
|
||||||
|
<CheckBox fx:id="showGuideline1" mnemonicParsing="false" text="Show Guideline" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="150.0" />
|
||||||
|
<Separator layoutX="19.6" layoutY="175.6" prefHeight="0.0" prefWidth="200.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="175.0" />
|
||||||
|
<Label text="Annotations" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="175.0" />
|
||||||
|
<RadioButton fx:id="hideAnnoRBtn1" mnemonicParsing="false" text="Hidden" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="200.0">
|
||||||
|
<toggleGroup>
|
||||||
|
<ToggleGroup fx:id="annoToggleGroup1" />
|
||||||
|
</toggleGroup>
|
||||||
|
</RadioButton>
|
||||||
|
<RadioButton fx:id="showAnnoRBtn1" mnemonicParsing="false" text="Visible" toggleGroup="$annoToggleGroup1" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="225.0" />
|
||||||
|
<RadioButton fx:id="partialAnnoRBtn1" mnemonicParsing="false" text="Partial" toggleGroup="$annoToggleGroup1" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="250.0" />
|
||||||
|
<RadioButton fx:id="importantAnnoRBtn1" mnemonicParsing="false" text="Important" toggleGroup="$annoToggleGroup1" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="275.0" />
|
||||||
|
<Button fx:id="saveAnno1" layoutX="11.0" layoutY="126.0" mnemonicParsing="false" text="Save Important Annotations" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="300.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</content>
|
||||||
|
</TitledPane>
|
||||||
|
<TitledPane animated="false" text="FPS Control">
|
||||||
|
<content>
|
||||||
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<CheckBox fx:id="showFPS1" layoutX="-14.0" layoutY="13.0" mnemonicParsing="false" selected="true" text="Show FPS" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</content>
|
||||||
|
</TitledPane>
|
||||||
|
</panes>
|
||||||
|
</Accordion>
|
||||||
|
</children>
|
||||||
|
</Pane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane fx:id="infoWrapper" focusTraversable="true" minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="200.0" visible="false">
|
<AnchorPane fx:id="infoWrapper" focusTraversable="true" minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="200.0" visible="false">
|
||||||
|
|||||||
Reference in New Issue
Block a user