Quellcode durchsuchen

Fixes bug in Joystick control where when active, it's value always has a length of 1 (ie: max radius).

Kieran Cunney vor 13 Jahren
Ursprung
Commit
b5b31b2e3e
1 geänderte Dateien mit 5 neuen und 3 gelöschten Zeilen
  1. 5 3
      gameplay/src/Joystick.cpp

+ 5 - 3
gameplay/src/Joystick.cpp

@@ -156,7 +156,8 @@ bool Joystick::touchEvent(Touch::TouchEvent touchEvent, int x, int y, unsigned i
             else
             {
                 value.set(_displacement);
-                value.normalize();
+                GP_ASSERT(_radius);
+                value.scale(1.0f / _radius);
             }
 
             // Check if the value has changed. Won't this always be the case?
@@ -178,7 +179,7 @@ bool Joystick::touchEvent(Touch::TouchEvent touchEvent, int x, int y, unsigned i
             _displacement.set(dx, dy);
             
             Vector2 value;
-            if (fabs(_displacement.x) > _radius || fabs(_displacement.y) > _radius)
+            if ((fabs(_displacement.x) > _radius) || (fabs(_displacement.y) > _radius))
             {
                 _displacement.normalize();
                 value.set(_displacement);
@@ -187,7 +188,8 @@ bool Joystick::touchEvent(Touch::TouchEvent touchEvent, int x, int y, unsigned i
             else
             {
                 value.set(_displacement);
-                value.normalize();
+                GP_ASSERT(_radius);
+                value.scale(1.0f / _radius);
             }
 
             if (_value != value)