From d6b0fec6d3a77511073785a838e001b3e16ad04c Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Wed, 27 Sep 2017 12:02:56 +1300 Subject: [PATCH 1/2] Start race in third person by default - Third person zoom limit has been lowered - Next mark highlighting and arrow only follows player boat --- .../Controllers/RaceViewController.java | 54 ++++++++++--------- .../main/java/visualiser/layout/View3D.java | 2 +- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index d1ef843e..64bca8b4 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -387,11 +387,27 @@ public class RaceViewController extends Controller { viewSubjects.add(markModel); } - for (VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { + // Position and add each boat to view + for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { + Shape3D mesh = Assets3D.getBoat(); + + PhongMaterial boatColorMat = new PhongMaterial(boat.getColor()); + //mesh.setMaterial(boatColorMat); + Subject3D boatModel = new Subject3D(mesh, boat.getSourceID()); + + // Configure visualiser for client's boat if (boat.isClientBoat()) { + // Add player boat highlight Shockwave boatHighlight = new Shockwave(10); boatHighlight.getMesh().setMaterial(new PhongMaterial(new Color(1, 1, 0, 0.1))); viewSubjects.add(boatHighlight); + + // Track player boat with camera + viewSubjects.add(boatModel); + view3D.trackSubject(boatModel); + view3D.setThirdPerson(); + + // Track player boat with highlight AnimationTimer highlightTrack = new AnimationTimer() { @Override public void handle(long now) { @@ -400,24 +416,18 @@ public class RaceViewController extends Controller { } }; highlightTrack.start(); - } - } - // Position and add each boat to view - for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) { -// MeshView mesh; -// if(boat.getSourceID() == race.getVisualiserRaceState().getPlayerBoatID()) { -// mesh = new MeshView(importer.getImport()); -// } else { -// mesh = new MeshView(importerBurgerBoat.getImport()); -// } - Shape3D mesh = Assets3D.getBoat(); - - PhongMaterial boatColorMat = new PhongMaterial(boat.getColor()); - //mesh.setMaterial(boatColorMat); - Subject3D boatModel = new Subject3D(mesh, boat.getSourceID()); - - viewSubjects.add(boatModel); + // Highlight next mark only for player boat + 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); + if(nextMark.getMark2() != null) { + view3D.getShape(nextMark.getMark2().getSourceID()).getMesh().setMaterial(markColor); + } + boat.legProperty().addListener((o, prev, curr) -> Platform.runLater(() -> swapColours(curr))); + } else { + viewSubjects.add(boatModel); + } //add sail Sails3D sails3D = new Sails3D(); @@ -502,17 +512,9 @@ public class RaceViewController extends Controller { }; trackBoat.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); - if(nextMark.getMark2() != null) { - view3D.getShape(nextMark.getMark2().getSourceID()).getMesh().setMaterial(markColor); - } Subject3D shockwave = new Shockwave(10); - viewSubjects.add(shockwave); - boat.legProperty().addListener((o, prev, curr) -> Platform.runLater(() -> swapColours(curr))); boat.hasCollidedProperty().addListener((o, prev, curr) -> Platform.runLater(() -> showCollision(boat, shockwave))); } // Fix initial bird's-eye position diff --git a/racevisionGame/src/main/java/visualiser/layout/View3D.java b/racevisionGame/src/main/java/visualiser/layout/View3D.java index 7277ac5f..8501cdaa 100644 --- a/racevisionGame/src/main/java/visualiser/layout/View3D.java +++ b/racevisionGame/src/main/java/visualiser/layout/View3D.java @@ -81,7 +81,7 @@ public class View3D extends Pane { /** * Distance to stop zoom */ - private final double ZOOM_IN_LIMIT = 30; + private final double ZOOM_IN_LIMIT = 3; private final double ZOOM_OUT_LIMIT = 700; private final double MAX_ZOOM_LIMIT = 1500; private final double MAX_PITCH = 60; // birds eye view From 73bffb35e3246d8039db9a4e86cb7188b0e99779 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Wed, 27 Sep 2017 12:15:13 +1300 Subject: [PATCH 2/2] Removed stutter --- .../java/visualiser/Controllers/RaceViewController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 64bca8b4..38239899 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -404,8 +404,10 @@ public class RaceViewController extends Controller { // Track player boat with camera viewSubjects.add(boatModel); - view3D.trackSubject(boatModel); - view3D.setThirdPerson(); + Platform.runLater(() -> { + view3D.trackSubject(boatModel); + view3D.setThirdPerson(); + }); // Track player boat with highlight AnimationTimer highlightTrack = new AnimationTimer() {