diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index b92d4e80..6f101989 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -482,6 +482,10 @@ public class RaceViewController extends Controller { // } // boat.legProperty().addListener((o, prev, curr) -> Platform.runLater(() -> swapColours(curr))); + //next mark indicator + changeNextMark(boat.getCurrentLeg()); + viewSubjects.add(Assets3D.ccwNextArrow); + viewSubjects.add(Assets3D.cwNextArrow); boat.legProperty().addListener((o, prev, curr) -> Platform.runLater(() -> changeNextMark(curr))); } else { viewSubjects.add(boatModel); @@ -502,11 +506,6 @@ public class RaceViewController extends Controller { sailsSubject.setHeading(visualiserRace.getVisualiserRaceState().getWindDirection().degrees()); viewSubjects.add(sailsSubject); - //next mark indicator - changeNextMark(boat.getCurrentLeg()); - viewSubjects.add(Assets3D.ccwNextArrow); - viewSubjects.add(Assets3D.cwNextArrow); - // SeagullFlock seagullFlock = new SeagullFlock(67, 43, 0); //// seagullFlock.addToFlock(); @@ -1045,6 +1044,17 @@ public class RaceViewController extends Controller { if(boat.getHealth()<=0){ //Boat is dead. Don't check it anymore for hp fp.displayDeath(fp.getSourceID()==raceState.getPlayerBoatID()); + Annotation3D sharks = new Annotation3D(Assets3D.getSharks()); + sharks.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); + sharks.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); + viewSubjects.add(sharks); + new AnimationTimer(){ + @Override + public void handle(long now) { + sharks.setHeading(sharks.getHeading().getAngle() - 3); + } + }.start(); + fp.setSourceID(0); try { raceState.getBoat(boat.getSourceID()).setStatus(BoatStatusEnum.DNF); diff --git a/racevisionGame/src/main/java/visualiser/layout/Assets3D.java b/racevisionGame/src/main/java/visualiser/layout/Assets3D.java index 266d8e12..a3c0fd03 100644 --- a/racevisionGame/src/main/java/visualiser/layout/Assets3D.java +++ b/racevisionGame/src/main/java/visualiser/layout/Assets3D.java @@ -28,6 +28,7 @@ public class Assets3D { public static Subject3D ccwNextArrow; public static SkyBox skyBox; public static Subject3D boatHighlight; + public static Subject3D sharks; public static void loadAssets(){ loadSails(); @@ -144,6 +145,11 @@ public class Assets3D { windArrow = new Annotation3D(loadX3d(arrowPath)); } + public static Shape3D getSharks(){ + String path = "assets/V1.0 Sharks.x3d"; + return loadX3d(path); + } + public static Shape3D loadX3d(String path){ X3dModelImporter x3dModelImporter = new X3dModelImporter(); URL asset = Assets3D.class.getClassLoader().getResource(path); diff --git a/racevisionGame/src/main/resources/assets/V1.0 Sharks.x3d b/racevisionGame/src/main/resources/assets/V1.0 Sharks.x3d new file mode 100644 index 00000000..4bb8b511 --- /dev/null +++ b/racevisionGame/src/main/resources/assets/V1.0 Sharks.x3d @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/racevisionGame/src/main/resources/assets/textures/Shark Material b/racevisionGame/src/main/resources/assets/textures/Shark Material new file mode 100644 index 00000000..ac970844 Binary files /dev/null and b/racevisionGame/src/main/resources/assets/textures/Shark Material differ