diff --git a/packages/flame_forge2d/lib/forge2d_camera.dart b/packages/flame_forge2d/lib/forge2d_camera.dart index 1706aa5fd0f..1a79c5e96fa 100644 --- a/packages/flame_forge2d/lib/forge2d_camera.dart +++ b/packages/flame_forge2d/lib/forge2d_camera.dart @@ -10,7 +10,7 @@ class Forge2DCamera extends Camera { @override Vector2 projectVector(Vector2 worldCoordinates) { - return ((worldCoordinates..y *= -1) - position)..scale(zoom); + return ((worldCoordinates.clone()..y *= -1) - position)..scale(zoom); } @override diff --git a/packages/flame_forge2d/test/position_test.dart b/packages/flame_forge2d/test/position_test.dart index 8a19a0c1b08..e0fd26c6945 100644 --- a/packages/flame_forge2d/test/position_test.dart +++ b/packages/flame_forge2d/test/position_test.dart @@ -15,4 +15,14 @@ void main() { }); }, ); + group( + 'Test input vector does not get modified while function call', + () { + test('Camera should not modify the input vector while projecting it', () { + final vec = Vector2(5, 6); + TestGame().camera.projectVector(vec); + expect(vec, Vector2(5, 6)); + }); + }, + ); }