Scaled down marks and boats to make 3rd person view more realistic
- Added boat and mark annotations to support selection at large camera distance - Reduced collision radius to 15 m - Fixed event startup and XML files as race was crashing on start #story[1296]
This commit is contained in:
@@ -93,7 +93,7 @@ public class HostController extends Controller {
|
||||
*/
|
||||
public void hostGamePressed() {
|
||||
try {
|
||||
this.game = new Event(true);
|
||||
this.game = new Event(false);
|
||||
connectSocket("localhost", 4942);
|
||||
} catch (EventConstructionException e) {
|
||||
Logger.getGlobal().log(Level.SEVERE, "Could not create Event.", e);
|
||||
|
||||
@@ -14,6 +14,7 @@ import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.input.KeyEvent;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.scene.shape.Box;
|
||||
import javafx.scene.shape.MeshView;
|
||||
import javafx.scene.shape.Sphere;
|
||||
import javafx.scene.transform.Translate;
|
||||
@@ -26,6 +27,7 @@ import visualiser.app.App;
|
||||
import visualiser.gameController.ControllerClient;
|
||||
import visualiser.gameController.Keys.ControlKey;
|
||||
import visualiser.gameController.Keys.KeyFactory;
|
||||
import visualiser.layout.BoatArrow;
|
||||
import visualiser.layout.MarkRadius;
|
||||
import visualiser.layout.Subject3D;
|
||||
import visualiser.layout.View3D;
|
||||
@@ -206,16 +208,17 @@ public class RaceController extends Controller {
|
||||
view3D.setItems(viewSubjects);
|
||||
// Position and add each mark to view
|
||||
for(Mark mark: race.getVisualiserRaceState().getMarks()) {
|
||||
Subject3D subject = new Subject3D(new Sphere(2));
|
||||
subject.setX(gpsConverter.convertGPS(mark.getPosition()).getX());
|
||||
subject.setZ(gpsConverter.convertGPS(mark.getPosition()).getY());
|
||||
MeshView mesh = new MeshView(importerMark.getImport());
|
||||
Subject3D markModel = new Subject3D(mesh);
|
||||
Subject3D markRadius = new MarkRadius(3);
|
||||
|
||||
double x = gpsConverter.convertGPS(mark.getPosition()).getX();
|
||||
double z = gpsConverter.convertGPS(mark.getPosition()).getY();
|
||||
|
||||
markModel.setX(x);
|
||||
markModel.setZ(z);
|
||||
markModel.setScale(0.1);
|
||||
|
||||
markRadius.setX(x);
|
||||
markRadius.setZ(z);
|
||||
|
||||
@@ -230,16 +233,29 @@ public class RaceController extends Controller {
|
||||
} else {
|
||||
mesh = new MeshView(importerBurgerBoat.getImport());
|
||||
}
|
||||
Subject3D subject = new Subject3D(mesh);
|
||||
viewSubjects.add(subject);
|
||||
Subject3D boatModel = new Subject3D(mesh);
|
||||
Subject3D boatArrow = new BoatArrow(12);
|
||||
|
||||
boatModel.setScale(0.1);
|
||||
|
||||
viewSubjects.add(boatModel);
|
||||
viewSubjects.add(boatArrow);
|
||||
|
||||
// Track this boat's movement with the new subject
|
||||
AnimationTimer trackBoat = new AnimationTimer() {
|
||||
@Override
|
||||
public void handle(long now) {
|
||||
subject.setHeading(boat.getBearing().degrees());
|
||||
subject.setX(gpsConverter.convertGPS(boat.getPosition()).getX());
|
||||
subject.setZ(gpsConverter.convertGPS(boat.getPosition()).getY());
|
||||
double heading = boat.getBearing().degrees();
|
||||
double x = gpsConverter.convertGPS(boat.getPosition()).getX();
|
||||
double z = 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();
|
||||
|
||||
Reference in New Issue
Block a user