diff --git a/src/raymath.h b/src/raymath.h index acf97fb9..e021b932 100644 --- a/src/raymath.h +++ b/src/raymath.h @@ -283,15 +283,22 @@ RMDEF Vector2 Vector2Rotate(Vector2 v, float degs) 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 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; } //----------------------------------------------------------------------------------