mixedreality/com.microsoft.mixedreality..../Core/Extensions/SystemNumericsExtensions.cs

62 lines
2.6 KiB
C#

// Copyright(c) Microsoft Corporation.
// Licensed under the MIT License.
namespace Microsoft.MixedReality.Toolkit
{
public static class SystemNumericsExtensions
{
/// <summary>
/// Converts this System.Numerics Vector3 to a UnityEngine Vector3.
/// </summary>
/// <param name="vector">The vector to convert.</param>
/// <returns>The converted vector.</returns>
public static UnityEngine.Vector3 ToUnityVector3(this System.Numerics.Vector3 vector)
{
return new UnityEngine.Vector3(vector.X, vector.Y, -vector.Z);
}
/// <summary>
/// Converts this System.Numerics Vector3 to a UnityEngine Vector3 format, storing values directly in referenced parameter
/// </summary>
public static void ConvertToUnityVector3(this System.Numerics.Vector3 source, ref UnityEngine.Vector3 target)
{
target.x = source.X;
target.y = source.Y;
target.z = -source.Z;
}
/// <summary>
/// Converts this System.Numerics Quaternion to a UnityEngine Quaternion.
/// </summary>
/// <param name="quaternion">The quaternion to convert.</param>
/// <returns>The converted quaternion.</returns>
public static UnityEngine.Quaternion ToUnityQuaternion(this System.Numerics.Quaternion quaternion)
{
return new UnityEngine.Quaternion(-quaternion.X, -quaternion.Y, quaternion.Z, quaternion.W);
}
public static UnityEngine.Matrix4x4 ToUnity(this System.Numerics.Matrix4x4 m) => new UnityEngine.Matrix4x4(
new UnityEngine.Vector4(m.M11, m.M12, -m.M13, m.M14),
new UnityEngine.Vector4(m.M21, m.M22, -m.M23, m.M24),
new UnityEngine.Vector4(-m.M31, -m.M32, m.M33, -m.M34),
new UnityEngine.Vector4(m.M41, m.M42, -m.M43, m.M44));
public static System.Numerics.Matrix4x4 ToSystemNumerics(this UnityEngine.Matrix4x4 m) => new System.Numerics.Matrix4x4(
m.m00, m.m10, -m.m20, m.m30,
m.m01, m.m11, -m.m21, m.m31,
-m.m02, -m.m12, m.m22, -m.m32,
m.m03, m.m13, -m.m23, m.m33);
/// <summary>
/// Converts this System.Numerics Quaternion to a UnityEngine Quaternion, storing values directly in referenced parameter
/// </summary>
public static void ConvertToUnityQuaternion(this System.Numerics.Quaternion source, ref UnityEngine.Quaternion target)
{
target.x = -source.X;
target.y = -source.Y;
target.z = source.Z;
target.w = source.W;
}
}
}