Fire follows boat. TODO: rotate fire. #story[1292]

main
David Wu 8 years ago
parent c527ad0c52
commit 4f838a3598

@ -238,7 +238,7 @@ public class RaceViewController extends Controller {
initialiseView3D(this.visualiserRace); initialiseView3D(this.visualiserRace);
initialiseHealthPane(); initialiseHealthPane();
initialiseRaceClock(); initialiseRaceClock();
initialiseFireEffect(); //initialiseFireEffect();
raceTimer(); // start the timer raceTimer(); // start the timer
new Sparkline(this.raceState, this.sparklineChart); new Sparkline(this.raceState, this.sparklineChart);
timeZone.setText(this.raceState.getRaceClock().getTimeZone()); timeZone.setText(this.raceState.getRaceClock().getTimeZone());
@ -321,6 +321,8 @@ public class RaceViewController extends Controller {
seaOverlay.setZ(210); seaOverlay.setZ(210);
viewSubjects.add(seaOverlay); viewSubjects.add(seaOverlay);
Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter); Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter);
for (Subject3D subject3D: boundary3D.getBoundaryNodes()){ for (Subject3D subject3D: boundary3D.getBoundaryNodes()){
viewSubjects.add(subject3D); viewSubjects.add(subject3D);
@ -349,6 +351,12 @@ public class RaceViewController extends Controller {
viewSubjects.add(boatModel); viewSubjects.add(boatModel);
FireParticle fire = new FireParticle();
viewSubjects.add(fire);
// Track this boat's movement with the new subject // Track this boat's movement with the new subject
AnimationTimer trackBoat = new AnimationTimer() { AnimationTimer trackBoat = new AnimationTimer() {
@Override @Override
@ -356,6 +364,11 @@ public class RaceViewController extends Controller {
boatModel.setHeading(boat.getBearing().degrees()); boatModel.setHeading(boat.getBearing().degrees());
boatModel.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); boatModel.setX(gpsConverter.convertGPS(boat.getPosition()).getX());
boatModel.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); 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(); trackBoat.start();

@ -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;
}
}
Loading…
Cancel
Save