From 9fbd5df62693fb49186618499a758ba558d27e7e Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 19 Sep 2017 15:35:13 +1200 Subject: [PATCH] Highlighting no longer goes over other boats. Player boat is highlighted in lobby. #story[1298] --- .../Controllers/InGameLobbyController.java | 10 ++++++ .../Controllers/RaceViewController.java | 33 ++++++++++--------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index 733d20e0..a621c8e5 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -15,6 +15,7 @@ import javafx.scene.control.Label; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; +import javafx.scene.paint.Color; import javafx.scene.paint.PhongMaterial; import javafx.scene.shape.MeshView; import mock.app.Event; @@ -22,6 +23,7 @@ import network.Messages.Enums.RaceStatusEnum; import network.Messages.Enums.RequestToJoinEnum; import visualiser.app.App; import visualiser.gameController.ControllerClient; +import visualiser.layout.BoatHighlight; import visualiser.layout.SeaSurface; import visualiser.layout.Subject3D; import visualiser.layout.View3D; @@ -155,6 +157,14 @@ public class InGameLobbyController extends Controller { playerBoatToSet.setPitch(20); + if (boat.isClientBoat()) { + BoatHighlight boatHighlight = new BoatHighlight(10, 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() { @Override diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 774ec780..4137b9b9 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -297,8 +297,24 @@ public class RaceViewController extends Controller { viewSubjects.add(markModel); } + + for (VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { + if (boat.isClientBoat()) { + BoatHighlight boatHighlight = new BoatHighlight(10, 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 - for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { + for (VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { MeshView mesh; if(boat.getSourceID() == race.getVisualiserRaceState().getPlayerBoatID()) { mesh = new MeshView(importer.getImport()); @@ -322,21 +338,6 @@ public class RaceViewController extends Controller { }; trackBoat.start(); - if (boat.isClientBoat()) { - BoatHighlight boatHighlight = new BoatHighlight(10, new Color(1, 1, 0, 0.1)); - viewSubjects.add(boatHighlight); - boatModel.getMesh().toFront(); - AnimationTimer highlightTrack = new AnimationTimer() { - @Override - public void handle(long now) { - boatHighlight.setX(boatModel.getPosition().getX()); - boatHighlight.setY(boatModel.getPosition().getY()); - boatHighlight.setZ(boatModel.getPosition().getZ()); - } - }; - highlightTrack.start(); - } - Material markColor = new PhongMaterial(new Color(0.15,0.9,0.2,1)); CompoundMark nextMark = boat.getCurrentLeg().getEndCompoundMark(); view3D.getShape(nextMark.getMark1().getSourceID()).getMesh().setMaterial(markColor);