fixed sail rotation broken from port to 3d #story[1266]

This commit is contained in:
Peter Galloway
2017-09-12 16:30:20 +12:00
parent 8dc3e54186
commit 71f626f57e
3 changed files with 29 additions and 24 deletions
@@ -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;
}
}
@@ -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());
}
/**
@@ -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();