فهرست منبع

Merge pull request #262 from kcunney/next

Fixes bug in Joystick control where when active, it's value is always being set to a length of 1 (ie: max radius).
Sean Paul Taylor 13 سال پیش
والد
کامیت
db26e608b4
1فایلهای تغییر یافته به همراه5 افزوده شده و 3 حذف شده
  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)