|
|
|
@ -202,11 +202,10 @@ public class RaceController extends Controller {
|
|
|
|
StlMeshImporter importerBurgerBoat = new StlMeshImporter();
|
|
|
|
StlMeshImporter importerBurgerBoat = new StlMeshImporter();
|
|
|
|
importerBurgerBoat.read(alternateBoatAsset);
|
|
|
|
importerBurgerBoat.read(alternateBoatAsset);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
view3D = new View3D(false);
|
|
|
|
view3D = new View3D(false);
|
|
|
|
|
|
|
|
view3D.setItems(viewSubjects);
|
|
|
|
view3D.setDistance(1050);
|
|
|
|
view3D.setDistance(1050);
|
|
|
|
view3D.setYaw(0);
|
|
|
|
view3D.setBirdsEye();
|
|
|
|
view3D.setPitch(60);
|
|
|
|
|
|
|
|
view3D.enableTracking();
|
|
|
|
view3D.enableTracking();
|
|
|
|
view3D.addAmbientLight(ambientLight);
|
|
|
|
view3D.addAmbientLight(ambientLight);
|
|
|
|
view3D.addPointLight(pointLight);
|
|
|
|
view3D.addPointLight(pointLight);
|
|
|
|
@ -216,14 +215,13 @@ public class RaceController extends Controller {
|
|
|
|
RaceDataSource raceData = visualiserRace.getVisualiserRaceState().getRaceDataSource();
|
|
|
|
RaceDataSource raceData = visualiserRace.getVisualiserRaceState().getRaceDataSource();
|
|
|
|
final GPSConverter gpsConverter = new GPSConverter(raceData, 450, 450);
|
|
|
|
final GPSConverter gpsConverter = new GPSConverter(raceData, 450, 450);
|
|
|
|
|
|
|
|
|
|
|
|
view3D.setItems(viewSubjects);
|
|
|
|
// Set up sea surface
|
|
|
|
|
|
|
|
SeaSurface sea = new SeaSurface(750, 200);
|
|
|
|
//viewSubjects.add(new Subject3D(new MeshView(new Plane3D(50, 50, 1, 1))));
|
|
|
|
sea.setX(250);
|
|
|
|
|
|
|
|
sea.setZ(210);
|
|
|
|
|
|
|
|
viewSubjects.add(sea);
|
|
|
|
|
|
|
|
|
|
|
|
SeaSurface sea = new SeaSurface(750, 200, 250, 0, 210);
|
|
|
|
|
|
|
|
SkyBox skyBox = new SkyBox(750, 200, 250, 0, 210);
|
|
|
|
SkyBox skyBox = new SkyBox(750, 200, 250, 0, 210);
|
|
|
|
viewSubjects.add(sea.getSurface());
|
|
|
|
|
|
|
|
viewSubjects.addAll(skyBox.getSkyBoxPlanes());
|
|
|
|
viewSubjects.addAll(skyBox.getSkyBoxPlanes());
|
|
|
|
|
|
|
|
|
|
|
|
Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter);
|
|
|
|
Boundary3D boundary3D = new Boundary3D(visualiserRace.getVisualiserRaceState().getRaceDataSource().getBoundary(), gpsConverter);
|
|
|
|
@ -234,20 +232,11 @@ public class RaceController extends Controller {
|
|
|
|
for(Mark mark: race.getVisualiserRaceState().getMarks()) {
|
|
|
|
for(Mark mark: race.getVisualiserRaceState().getMarks()) {
|
|
|
|
MeshView mesh = new MeshView(importerMark.getImport());
|
|
|
|
MeshView mesh = new MeshView(importerMark.getImport());
|
|
|
|
Subject3D markModel = new Subject3D(mesh);
|
|
|
|
Subject3D markModel = new Subject3D(mesh);
|
|
|
|
// Subject3D markRadius = new MarkRadius(3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double x = gpsConverter.convertGPS(mark.getPosition()).getX();
|
|
|
|
markModel.setX(gpsConverter.convertGPS(mark.getPosition()).getX());
|
|
|
|
double z = gpsConverter.convertGPS(mark.getPosition()).getY();
|
|
|
|
markModel.setZ(gpsConverter.convertGPS(mark.getPosition()).getY());
|
|
|
|
|
|
|
|
|
|
|
|
markModel.setX(x);
|
|
|
|
|
|
|
|
markModel.setZ(z);
|
|
|
|
|
|
|
|
markModel.setScale(3.5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// markRadius.setX(x);
|
|
|
|
|
|
|
|
// markRadius.setZ(z);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
viewSubjects.add(markModel);
|
|
|
|
viewSubjects.add(markModel);
|
|
|
|
// viewSubjects.add(markRadius);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Position and add each boat to view
|
|
|
|
// Position and add each boat to view
|
|
|
|
for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) {
|
|
|
|
for(VisualiserBoat boat: race.getVisualiserRaceState().getBoats()) {
|
|
|
|
@ -258,28 +247,16 @@ public class RaceController extends Controller {
|
|
|
|
mesh = new MeshView(importerBurgerBoat.getImport());
|
|
|
|
mesh = new MeshView(importerBurgerBoat.getImport());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Subject3D boatModel = new Subject3D(mesh);
|
|
|
|
Subject3D boatModel = new Subject3D(mesh);
|
|
|
|
//Subject3D boatArrow = new BoatArrow(12);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boatModel.setScale(1.5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
viewSubjects.add(boatModel);
|
|
|
|
viewSubjects.add(boatModel);
|
|
|
|
//viewSubjects.add(boatArrow);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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
|
|
|
|
public void handle(long now) {
|
|
|
|
public void handle(long now) {
|
|
|
|
double heading = boat.getBearing().degrees();
|
|
|
|
boatModel.setHeading(boat.getBearing().degrees());
|
|
|
|
double x = gpsConverter.convertGPS(boat.getPosition()).getX();
|
|
|
|
boatModel.setX(gpsConverter.convertGPS(boat.getPosition()).getX());
|
|
|
|
double z = gpsConverter.convertGPS(boat.getPosition()).getY();
|
|
|
|
boatModel.setZ(gpsConverter.convertGPS(boat.getPosition()).getY());
|
|
|
|
|
|
|
|
|
|
|
|
boatModel.setHeading(heading);
|
|
|
|
|
|
|
|
boatModel.setX(x);
|
|
|
|
|
|
|
|
boatModel.setZ(z);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// boatArrow.setHeading(heading);
|
|
|
|
|
|
|
|
// boatArrow.setX(x);
|
|
|
|
|
|
|
|
// boatArrow.setZ(z);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
trackBoat.start();
|
|
|
|
trackBoat.start();
|
|
|
|
|