Fire follows boat. TODO: rotate fire. #story[1292]
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user