diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 34638f11..00956d4b 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -238,7 +238,7 @@ public class RaceViewController extends Controller { initialiseView3D(this.visualiserRace); initialiseHealthPane(); initialiseRaceClock(); - initialiseFireEffect(); + //initialiseFireEffect(); raceTimer(); // start the timer new Sparkline(this.raceState, this.sparklineChart); timeZone.setText(this.raceState.getRaceClock().getTimeZone()); @@ -321,6 +321,8 @@ public class RaceViewController extends Controller { seaOverlay.setZ(210); viewSubjects.add(seaOverlay); + + Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter); for (Subject3D subject3D: boundary3D.getBoundaryNodes()){ viewSubjects.add(subject3D); @@ -349,6 +351,12 @@ public class RaceViewController extends Controller { viewSubjects.add(boatModel); + + + FireParticle fire = new FireParticle(); + viewSubjects.add(fire); + + // Track this boat's movement with the new subject AnimationTimer trackBoat = new AnimationTimer() { @Override @@ -356,6 +364,11 @@ public class RaceViewController extends Controller { boatModel.setHeading(boat.getBearing().degrees()); boatModel.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); boatModel.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); + + //Set up fire particles + fire.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); + fire.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); + } }; trackBoat.start(); diff --git a/racevisionGame/src/main/java/visualiser/layout/FireParticle.java b/racevisionGame/src/main/java/visualiser/layout/FireParticle.java new file mode 100644 index 00000000..dcc03a90 --- /dev/null +++ b/racevisionGame/src/main/java/visualiser/layout/FireParticle.java @@ -0,0 +1,59 @@ +package visualiser.layout; + +import javafx.geometry.Point3D; +import javafx.scene.image.Image; +import javafx.scene.paint.Color; +import javafx.scene.paint.Material; +import javafx.scene.paint.PhongMaterial; +import javafx.scene.shape.MeshView; +import javafx.scene.shape.Shape3D; +import javafx.scene.transform.Rotate; +import javafx.scene.transform.Translate; + +/** + * Created by zwu18 on 24/09/17. + */ +public class FireParticle extends Subject3D { + + public FireParticle(){ + super(createFire(), 0); + + } + + private static Shape3D createFire(){ + + Image fire = new Image(FireParticle.class.getClassLoader().getResourceAsStream("images/fire.gif")); + + Plane3D plane = new Plane3D(20, 20, 10, 10); + + PhongMaterial material = new PhongMaterial(); + material.setDiffuseColor(Color.web("#FFFFFF")); + material.setSpecularColor(Color.web("#000000")); + material.setDiffuseMap(fire); + + + //material.setDiffuseMap(fire); + + MeshView fireSurface = new MeshView(plane); + + + fireSurface.setRotationAxis(new Point3D(1, 0, 0)); + fireSurface.translateXProperty().setValue(-10); + fireSurface.translateZProperty().setValue(-10); + + fireSurface.rotateProperty().setValue(90); + + fireSurface.translateXProperty().setValue(10); + fireSurface.translateZProperty().setValue(10); + + + fireSurface.setMaterial(material); + fireSurface.setMouseTransparent(true); + fireSurface.toFront(); + + System.out.println("Fire created"); + + return fireSurface; + } + +}