I know there’s probably way too much water under the bridge for this to ever change, but one thing that has really bugged me about the API is the lack of consistency in some naming conventions. The most obvious example being the plethora of “InPlace” operations found in the Vector classes.
For example:
.multiply() - does not modify the vector, but returns the result in a new Vector3.
.multiplyInPlace() - modifies the value of the vector.
However…
.normalize() - modifies the value of the vector.
.normalizeToNew() - does not modify the vector, but returns the result in a new Vector3
This is just one of many examples that I’ve found. Why do we have “in-place” methods at all? Wouldn’t it make more sense to have methods always operate on the object itself, and save static functions for creating new objects? Like so:
Vector3.prototype.multiply(v) - Modify vector “in place” by v, returning nothing.
Vector3.Multiply(v1, v2) - Return result of v1 * v2 in a new Vector3.
… and just keep this theme consistent across all objects? The way it is now is very confusing, extremely difficult to remember, and clutters the API.
Like I said, probably way too late to do anything about it at this point, but maybe for future reference? I know it’s extremely difficult when you have so many different people contributing, but I think enforcing some consistent standard here would really help keep things cleaner going forward.