Streamingle_URP/Assets/External/UniGLTF/Tests/UniGLTF/UnityEngineAndNumerics.cs

48 lines
1.6 KiB
C#

using System.Runtime.InteropServices;
using NUnit.Framework;
namespace UniGLTF
{
public class UnityEngineNumerics
{
[Test]
public void Values()
{
var values = new float[16];
// T
{
var um = UnityEngine.Matrix4x4.Translate(new UnityEngine.Vector3(1, 2, 3));
using (var pin = Pin.Create(new[] { um }))
{
Marshal.Copy(pin.Ptr, values, 0, 16);
}
Assert.AreEqual(1, um.m03);
Assert.AreEqual(2, um.m13);
Assert.AreEqual(3, um.m23);
Assert.AreEqual(new UnityEngine.Vector4(1, 2, 3, 1), um.GetColumn(3));
Assert.AreEqual(new float[] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 2, 3, 1 }, values);
var v = new UnityEngine.Vector4();
var m = new UnityEngine.Matrix4x4();
m.MultiplyVector(v);
// new UnityEngine.Matrix4x4.mul new UnityEngine.Vector3().mul
}
{
var nm = System.Numerics.Matrix4x4.CreateTranslation(1, 2, 3);
using (var pin = Pin.Create(new[] { nm }))
{
Marshal.Copy(pin.Ptr, values, 0, 16);
}
Assert.AreEqual(1, nm.M41);
Assert.AreEqual(2, nm.M42);
Assert.AreEqual(3, nm.M43);
Assert.AreEqual(new System.Numerics.Vector3(1, 2, 3), nm.Translation);
Assert.AreEqual(new float[] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 2, 3, 1 }, values);
}
}
}
}