diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index 38544ba6..ce6d4b08 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -25,6 +25,7 @@ import shared.model.Boat; import visualiser.app.App; import visualiser.gameController.ControllerClient; import visualiser.layout.SeaSurface; +import visualiser.layout.Shockwave; import visualiser.layout.Subject3D; import visualiser.layout.View3D; import visualiser.model.VisualiserBoat; @@ -168,6 +169,15 @@ public class InGameLobbyController extends Controller { 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() { @Override @@ -239,7 +249,7 @@ public class InGameLobbyController extends Controller { public void handle(long arg0) { //Get the current race status. RaceStatusEnum raceStatus = visualiserRaceEvent.getVisualiserRaceState().getRaceStatusEnum(); - + //Try catch for getting interval times try { long interval = ChronoUnit.MILLIS.between(visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getCurrentTime(), visualiserRaceEvent.getVisualiserRaceState().getRaceClock().getStartingTime()); diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index edbbd248..3ffcaf7f 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -301,8 +301,25 @@ public class RaceViewController extends Controller { 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 - 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()); diff --git a/racevisionGame/src/main/java/visualiser/layout/Shockwave.java b/racevisionGame/src/main/java/visualiser/layout/Shockwave.java index efdb0c5d..37daf6b3 100644 --- a/racevisionGame/src/main/java/visualiser/layout/Shockwave.java +++ b/racevisionGame/src/main/java/visualiser/layout/Shockwave.java @@ -13,5 +13,6 @@ public class Shockwave extends Subject3D { super(new Cylinder(radius,0),0); getMesh().getTransforms().add(new Rotate(-90, Rotate.X_AXIS)); getMesh().setMaterial(new PhongMaterial(new Color(0,0,0,0))); + getMesh().setMouseTransparent(true); } }