From 3ca62e6c2b3d4019bb6ecbfda5546e3a172bed7c Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 19 Sep 2017 14:39:25 +1200 Subject: [PATCH 1/5] Added basic highlighting to player boat. #story[1298] --- .../Controllers/RaceViewController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index c2153c1f..774ec780 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -322,6 +322,21 @@ 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); From cfdbf5896fd320eabce5cab9b01e741202aa8232 Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 19 Sep 2017 14:42:21 +1200 Subject: [PATCH 2/5] Added basic highlighting to player boat. #story[1298] --- .../java/visualiser/layout/BoatHighlight.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java diff --git a/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java b/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java new file mode 100644 index 00000000..1bcda0ee --- /dev/null +++ b/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java @@ -0,0 +1,18 @@ +package visualiser.layout; + +import javafx.scene.paint.Color; +import javafx.scene.paint.PhongMaterial; +import javafx.scene.shape.Cylinder; +import javafx.scene.transform.Rotate; + +/** + * Created by jjg64 on 19/09/17. + */ +public class BoatHighlight extends Subject3D { + + public BoatHighlight(double radius, Color color) { + super(new Cylinder(radius,0),0); + getMesh().getTransforms().add(new Rotate(-90, Rotate.X_AXIS)); + getMesh().setMaterial(new PhongMaterial(color)); + } +} From 9fbd5df62693fb49186618499a758ba558d27e7e Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 19 Sep 2017 15:35:13 +1200 Subject: [PATCH 3/5] 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); From a82d3081fcaaaa290c6e8f51196fb5e711bdced2 Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 19 Sep 2017 15:43:22 +1200 Subject: [PATCH 4/5] Replace the class use of highlight with shockwave. #story[1298] --- .../Controllers/InGameLobbyController.java | 5 +++-- .../Controllers/RaceViewController.java | 3 ++- .../java/visualiser/layout/BoatHighlight.java | 18 ------------------ 3 files changed, 5 insertions(+), 21 deletions(-) delete mode 100644 racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java diff --git a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java index a621c8e5..862953b2 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/InGameLobbyController.java @@ -23,8 +23,8 @@ 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.Shockwave; import visualiser.layout.Subject3D; import visualiser.layout.View3D; import visualiser.model.VisualiserBoat; @@ -158,7 +158,8 @@ public class InGameLobbyController extends Controller { if (boat.isClientBoat()) { - BoatHighlight boatHighlight = new BoatHighlight(10, new Color(1, 1, 0, 0.1)); + 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()); diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 4137b9b9..a6e6fca0 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -300,7 +300,8 @@ public class RaceViewController extends Controller { for (VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { if (boat.isClientBoat()) { - BoatHighlight boatHighlight = new BoatHighlight(10, new Color(1, 1, 0, 0.1)); + 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 diff --git a/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java b/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java deleted file mode 100644 index 1bcda0ee..00000000 --- a/racevisionGame/src/main/java/visualiser/layout/BoatHighlight.java +++ /dev/null @@ -1,18 +0,0 @@ -package visualiser.layout; - -import javafx.scene.paint.Color; -import javafx.scene.paint.PhongMaterial; -import javafx.scene.shape.Cylinder; -import javafx.scene.transform.Rotate; - -/** - * Created by jjg64 on 19/09/17. - */ -public class BoatHighlight extends Subject3D { - - public BoatHighlight(double radius, Color color) { - super(new Cylinder(radius,0),0); - getMesh().getTransforms().add(new Rotate(-90, Rotate.X_AXIS)); - getMesh().setMaterial(new PhongMaterial(color)); - } -} From 2cf0cca15794cb8ccc81fd1731c571fb3995ab42 Mon Sep 17 00:00:00 2001 From: Joseph Date: Thu, 21 Sep 2017 16:51:00 +1200 Subject: [PATCH 5/5] Can no longer click around the boat highlighting. #fix #story[1298] --- racevisionGame/src/main/java/visualiser/layout/Shockwave.java | 1 + 1 file changed, 1 insertion(+) 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); } }