From 088e73414b52f33589650e2bfa7a41ad96f6fbe8 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Sun, 24 Sep 2017 00:36:35 +1200 Subject: [PATCH] Fixed small bug where the sail never stopps jittering after moving #story[1297] --- .../Controllers/RaceViewController.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index c2d6e3e0..267c570d 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -324,6 +324,7 @@ public class RaceViewController extends Controller { AnimationTimer sailsFollowBoat = new AnimationTimer() { double sailCurrent = visualiserRace.getVisualiserRaceState().getWindDirection().degrees(); boolean canLuff = true; + double turnRate = 5; @Override public void handle(long now) { @@ -344,19 +345,20 @@ public class RaceViewController extends Controller { sailDir = visualiserRace.getVisualiserRaceState().getWindDirection().degrees(); } - double compA = ((sailCurrent - sailDir) % 360 + 360) % 360; - double compB = ((sailDir - sailCurrent) % 360 + 360) % 360; - if (compB < compA){ - if (compB < compA - 5){ - sailCurrent += 5; + double compA = ((sailCurrent - sailDir) % 360 + 360) % 360;//degrees right + if (compA > 180) compA = 360 - compA; + double compB = ((sailDir - sailCurrent) % 360 + 360) % 360;//degrees left + if (compB > compA){ + if (compA > turnRate){ + sailCurrent = ((sailCurrent - turnRate) % 360 + 360) % 360; canLuff = false; } else { sailCurrent = sailDir; canLuff = true; } } else { - if (compA > compB + 5){ - sailCurrent -= 5; + if (compB > turnRate){ + sailCurrent = ((sailCurrent + turnRate) % 360 + 360) % 360; canLuff = false; } else { sailCurrent = sailDir; @@ -370,6 +372,7 @@ public class RaceViewController extends Controller { sails3D.stopLuffing(); } } else { + System.out.println("luffing"); if (!sails3D.isLuffing()) { sails3D.startLuffing(); } @@ -377,6 +380,7 @@ public class RaceViewController extends Controller { } sailsSubject.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); sailsSubject.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); + } }; sailsFollowBoat.start();