From 71f626f57e9bb0999bf6d0bced5594c00aa315a1 Mon Sep 17 00:00:00 2001 From: Peter Galloway Date: Tue, 12 Sep 2017 16:30:20 +1200 Subject: [PATCH] fixed sail rotation broken from port to 3d #story[1266] --- .../java/seng302/visualiser/GameView3D.java | 26 +++++++++++-------- .../controllers/RaceViewController.java | 4 +-- .../fxObjects/assets_2D/BoatObject.java | 23 ++++++++-------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/main/java/seng302/visualiser/GameView3D.java b/src/main/java/seng302/visualiser/GameView3D.java index 84adf8e0..98046b90 100644 --- a/src/main/java/seng302/visualiser/GameView3D.java +++ b/src/main/java/seng302/visualiser/GameView3D.java @@ -179,19 +179,19 @@ public class GameView3D { black.setLayoutX(-.125); black.setLayoutY(0); - ImagePattern oceanImage = new ImagePattern( - new Image( - GameView3D.class.getResourceAsStream( - "/pics/creek.gif") - ), 0, 0, 1000, 1000, false - ); - - Circle ocean = new Circle(0, 0, 5000); - ocean.setFill(oceanImage); - ocean.getTransforms().add(new Scale(0.1, 0.1)); +// ImagePattern oceanImage = new ImagePattern( +// new Image( +// GameView3D.class.getResourceAsStream( +// "/pics/water.gif") +// ), 0, 0, 1000, 1000, false +// ); +// +// Circle ocean = new Circle(0, 0, 5000); +// ocean.setFill(oceanImage); +// ocean.getTransforms().add(new Scale(0.1, 0.1)); gameObjects.getChildren().addAll( - ocean, +// ocean, // ModelFactory.importModel(ModelType.OCEAN).getAssets(), raceBorder, trail, markers, tokens, playerAnnotation, white, blue, green, black, red @@ -750,4 +750,8 @@ public class GameView3D { // }); // playerYacht.addMarkRoundingListener(this::updateMarkArrows); } + + public void setWindDir(double windDir) { + this.windDir = windDir; + } } diff --git a/src/main/java/seng302/visualiser/controllers/RaceViewController.java b/src/main/java/seng302/visualiser/controllers/RaceViewController.java index b02b8df2..9ae2aa2a 100644 --- a/src/main/java/seng302/visualiser/controllers/RaceViewController.java +++ b/src/main/java/seng302/visualiser/controllers/RaceViewController.java @@ -155,7 +155,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel // raceState.addCollisionListener(gameView::drawCollision); raceState.windDirectionProperty().addListener((obs, oldDirection, newDirection) -> { -// gameView.setWindDir(newDirection.doubleValue()); + gameView.setWindDir(newDirection.doubleValue()); Platform.runLater(() -> updateWindDirection(newDirection.doubleValue())); }); // raceState.windSpeedProperty().addListener((obs, oldSpeed, newSpeed) -> @@ -165,7 +165,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel updateWindDirection(raceState.windDirectionProperty().doubleValue()); updateWindSpeed(raceState.getWindSpeed()); }); -// gameView.setWindDir(raceState.windDirectionProperty().doubleValue()); + gameView.setWindDir(raceState.windDirectionProperty().doubleValue()); } /** diff --git a/src/main/java/seng302/visualiser/fxObjects/assets_2D/BoatObject.java b/src/main/java/seng302/visualiser/fxObjects/assets_2D/BoatObject.java index f087e15c..c92a457a 100644 --- a/src/main/java/seng302/visualiser/fxObjects/assets_2D/BoatObject.java +++ b/src/main/java/seng302/visualiser/fxObjects/assets_2D/BoatObject.java @@ -244,27 +244,28 @@ public class BoatObject extends Group { wake.getTransforms().setAll(new Rotate(heading, new Point3D(0,0,1))); if (sailsIn) { boatAssets.showSail(); - System.out.println("heading = " + heading); Double sailWindOffset = 30.0; Double upwindAngleLimit = 15.0; Double downwindAngleLimit = 10.0; //Upwind from normalised horizontal Double normalizedHeading = normalizeHeading(heading, windDir); + System.out.println("normalizedHeading = " + normalizedHeading); if (normalizedHeading < 180) { if (normalizedHeading < sailWindOffset + upwindAngleLimit){ - boatAssets.rotateSail(-heading + 90 - upwindAngleLimit); + boatAssets.rotateSail(-upwindAngleLimit); } else if (normalizedHeading > 90 + sailWindOffset){ - boatAssets.rotateSail(-heading + downwindAngleLimit); + boatAssets.rotateSail(-90 + downwindAngleLimit); } else { - boatAssets.rotateSail(-heading + 90 + sailWindOffset); + boatAssets.rotateSail(-heading + windDir + sailWindOffset); } } else { -// if (normalizedHeading > 360 - (sailWindOffset + upwindAngleLimit)){ -// boatAssets.rotateSail(-heading + 90 + upwindAngleLimit); -// } else if (normalizedHeading < 270 - sailWindOffset){ -// boatAssets.rotateSail(-heading + 180 - downwindAngleLimit); -// } else { -// boatAssets.rotateSail(-heading + 90 - sailWindOffset); -// } + if (normalizedHeading > 360 - (sailWindOffset + upwindAngleLimit)) { + boatAssets.rotateSail(upwindAngleLimit); + } else if (normalizedHeading < 270 - sailWindOffset) { + boatAssets.rotateSail(90 - downwindAngleLimit); + } else { + System.out.println("windDir = " + windDir); + boatAssets.rotateSail(-heading + windDir - sailWindOffset); + } } } else { boatAssets.hideSail();