libgdx and Vector2 mutability

less than 1 minute read

Here’s a quick post to rant about something that’s been affecting me for the last couple of days.

Recently I find myself toying around with libgdx to work on a game that I’ve been meaning to develop for a while. The problem with this library is that apparently, all Vector2 functions affect the actual vector on which they are invoked. This goes against the Java standard of immutability for non-primitive types and is incredibly annoying, especially because these functions will also return the vector for chaining.

Why is this annoying? Well, when you’re used to the Java standard, you don’t expect any functions to affect the actual object. Think for example about Java’s String.split. This will never affect the String itself, especially because the String is immutable. Affecting the String would mean creating a new instance of that string with the change applied to it.

Frankly, I’m not sure what happens in the backstage but this stinks.