|
@@ -283,15 +283,22 @@ RMDEF Vector2 Vector2Rotate(Vector2 v, float degs)
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-// Move towards Target.
|
|
|
|
-RMDEF Vector2 Vector2MoveTowards( Vector2 v, Vector2 target, float maxDistance)
|
|
|
|
|
|
+// Move Vector towards target
|
|
|
|
+RMDEF Vector2 Vector2MoveTowards(Vector2 v, Vector2 target, float maxDistance)
|
|
{
|
|
{
|
|
|
|
+ Vector2 result = { 0 }
|
|
float dx = target.x - v.x;
|
|
float dx = target.x - v.x;
|
|
float dy = target.y - v.y;
|
|
float dy = target.y - v.y;
|
|
- float value = ( dx * dx ) + ( dy * dy );
|
|
|
|
- if ( value == 0 || ( maxDistance >= 0 && value <= maxDistance * maxDistance )) return target;
|
|
|
|
- float result = sqrtf( value );
|
|
|
|
- return (Vector2){ v.x + dx / result * maxDistance, v.y + dy / result * maxDistance };
|
|
|
|
|
|
+ float value = (dx*dx) + (dy*dy);
|
|
|
|
+
|
|
|
|
+ if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) result = target;
|
|
|
|
+
|
|
|
|
+ float dist = sqrtf(value);
|
|
|
|
+
|
|
|
|
+ result.x = v.x + dx/dist*maxDistance;
|
|
|
|
+ result.y = v.y + dy/dist*maxDistance;
|
|
|
|
+
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
|
|
|
|
//----------------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------------
|