Vector "Scale" Has No Effect
Rorroh
The
Scale
method on Vector classes is intended to scale each component of a vector by the respective component of another vector, and apply the result to the vector whose method was called. This method does not seem to be functioning in Udon. This issue affects all Vector types.Below is a code snippet demonstrating the issue, along with the expected and actual log outputs.
Version info:
- Unity 2022.3.22f1
- VRChat SDK - Base 3.10.3
- VRChat SDK - Worlds 3.10.3
Vector3Scale.cs:
void Start()
{
var v2ScaleTest = new Vector2(1, 2);
v2ScaleTest.Scale(new Vector2(10, 20));
Debug.Log($"Vector2(1, 2, 3).Scale(10, 20, 30) = {v2ScaleTest}");
var v2IntScaleTest = new Vector2Int(1, 2);
v2IntScaleTest.Scale(new Vector2Int(10, 20));
Debug.Log($"Vector2Int(1, 2, 3).Scale(10, 20, 30) = {v2IntScaleTest}");
var v3ScaleTest = new Vector3(1, 2, 3);
v3ScaleTest.Scale(new Vector3(10, 20, 30));
Debug.Log($"Vector3(1, 2, 3).Scale(10, 20, 30) = {v3ScaleTest}");
var v3IntScaleTest = new Vector3Int(1, 2, 3);
v3IntScaleTest.Scale(new Vector3Int(10, 20, 30));
Debug.Log($"Vector3Int(1, 2, 3).Scale(10, 20, 30) = {v3IntScaleTest}");
var v4ScaleTest = new Vector4(1, 2, 3, 4);
v4ScaleTest.Scale(new Vector4(10, 20, 30, 40));
Debug.Log($"Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = {v4ScaleTest}");
}
Output when executed as C#:
Vector2(1, 2, 3).Scale(10, 20, 30) = (10.00, 40.00)
Vector2Int(1, 2, 3).Scale(10, 20, 30) = (10, 40)
Vector3(1, 2, 3).Scale(10, 20, 30) = (10.00, 40.00, 90.00)
Vector3Int(1, 2, 3).Scale(10, 20, 30) = (10, 40, 90)
Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = (10.00, 40.00, 90.00, 160.00)
Output when executed as U#:
Vector2(1, 2, 3).Scale(10, 20, 30) = (1.00, 2.00)
Vector2Int(1, 2, 3).Scale(10, 20, 30) = (1, 2)
Vector3(1, 2, 3).Scale(10, 20, 30) = (1.00, 2.00, 3.00)
Vector3Int(1, 2, 3).Scale(10, 20, 30) = (1, 2, 3)
Vector3Int(1, 2, 3).Scale(10, 20, 30) = (1, 2, 3)
Vector4(1, 2, 3, 4).Scale(10, 20, 30, 40) = (1.00, 2.00, 3.00, 4.00)
Log In