Просмотр исходного кода

去掉原来的服务端的Vector3库,直接引用Unity.Mathematics库,逻辑层统一使用Mathematics。这样前后端的数学库就完全统一了

tanghai 3 лет назад
Родитель
Сommit
667e307e97
45 измененных файлов с 148 добавлено и 5018 удалено
  1. 6 2
      DotNet/ThirdParty/DotNet.ThirdParty.csproj
  2. 6 0
      DotNet/ThirdParty/Unity.Mathematics/PropertyAttribute.cs
  3. 0 600
      DotNet/ThirdParty/UnityEngine/Mathf.cs
  4. 0 100
      DotNet/ThirdParty/UnityEngine/Matrix3x3.cs
  5. 0 1412
      DotNet/ThirdParty/UnityEngine/Matrix4x4.cs
  6. 0 920
      DotNet/ThirdParty/UnityEngine/Quaternion.cs
  7. 0 493
      DotNet/ThirdParty/UnityEngine/Vector2.cs
  8. 0 656
      DotNet/ThirdParty/UnityEngine/Vector3.cs
  9. 0 575
      DotNet/ThirdParty/UnityEngine/Vector4.cs
  10. 0 2
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/AI_Attack.cs
  11. 2 2
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/AI_XunLuo.cs
  12. 2 2
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/XunLuoPathComponentSystem.cs
  13. 3 3
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs
  14. 3 3
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/M2C_StopHandler.cs
  15. 4 3
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/MoveHelper.cs
  16. 5 5
      Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Unit/UnitFactory.cs
  17. 2 2
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/AOI/ChangePosition_NotifyAOI.cs
  18. 2 2
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/C2M_PathfindingResultHandler.cs
  19. 1 4
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/C2M_StopHandler.cs
  20. 10 9
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/MoveHelper.cs
  21. 3 3
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Transfer/M2M_UnitTransferRequestHandler.cs
  22. 3 3
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Unit/UnitFactory.cs
  23. 4 4
      Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Unit/UnitHelper.cs
  24. 3 3
      Unity/Assets/Scripts/Codes/Hotfix/Server/Module/AOI/AOIEntitySystem.cs
  25. 25 22
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Move/MoveComponentSystem.cs
  26. 17 17
      Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Recast/PathfindingComponentSystem.cs
  27. 2 1
      Unity/Assets/Scripts/Codes/Hotfix/Unity.Hotfix.Codes.asmdef
  28. 2 1
      Unity/Assets/Scripts/Codes/HotfixView/Unity.HotfixView.Codes.asmdef
  29. 2 2
      Unity/Assets/Scripts/Codes/Model/Client/Demo/AI/XunLuoPathComponent.cs
  30. 0 8
      Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper.meta
  31. 0 113
      Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper/PositionHelper.cs
  32. 0 11
      Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper/PositionHelper.cs.meta
  33. 2 2
      Unity/Assets/Scripts/Codes/Model/Server/Module/AOI/AOIEntity.cs
  34. 9 9
      Unity/Assets/Scripts/Codes/Model/Share/Module/Move/MoveComponent.cs
  35. 9 9
      Unity/Assets/Scripts/Codes/Model/Share/Module/Unit/Unit.cs
  36. 2 2
      Unity/Assets/Scripts/Codes/Model/Share/Module/Unit/UnitEventType.cs
  37. 2 1
      Unity/Assets/Scripts/Codes/Model/Unity.Model.Codes.asmdef
  38. 2 1
      Unity/Assets/Scripts/Codes/ModelView/Unity.ModelView.Codes.asmdef
  39. 1 2
      Unity/Assets/Scripts/Core/Module/Network/NetServices.cs
  40. 4 4
      Unity/Assets/Scripts/Core/Mongo/MongoRegister.cs
  41. 2 1
      Unity/Assets/Scripts/Core/Unity.Core.asmdef
  42. 2 1
      Unity/Assets/Scripts/Empty/Hotfix/Unity.Hotfix.asmdef
  43. 2 1
      Unity/Assets/Scripts/Empty/HotfixView/Unity.HotfixView.asmdef
  44. 2 1
      Unity/Assets/Scripts/Empty/Model/Unity.Model.asmdef
  45. 2 1
      Unity/Assets/Scripts/Empty/ModelView/Unity.ModelView.asmdef

+ 6 - 2
DotNet/ThirdParty/DotNet.ThirdParty.csproj

@@ -14,7 +14,7 @@
     </PropertyGroup>
     
     <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
-      <DefineConstants>DOTNET</DefineConstants>
+      <DefineConstants>DOTNET;UNITY_DOTSPLAYER</DefineConstants>
       <OutputPath>..\..\Bin\</OutputPath>
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
       <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@@ -22,7 +22,7 @@
     </PropertyGroup>
     
     <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
-      <DefineConstants>DOTNET</DefineConstants>
+      <DefineConstants>DOTNET;UNITY_DOTSPLAYER</DefineConstants>
       <OutputPath>..\..\Bin\</OutputPath>
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
       <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
@@ -41,6 +41,10 @@
     <Compile Include="..\..\Unity\Assets\Scripts\ThirdParty\ShareLib\Recast\Recast.cs">
       <Link>Recast\Recast.cs</Link>
     </Compile>
+
+    <Compile Include="..\..\Unity\Library\PackageCache\com.unity.mathematics*\Unity.Mathematics\**\*.cs">
+        <Link>Unity.Mathematics/$([System.String]::new(%(RecursiveDir)).Substring($([System.String]::new(%(RecursiveDir)).Indexof("Unity.Mathematics"))).Replace("Unity.Mathematics", ""))/%(FileName)%(Extension)</Link>
+    </Compile>
     </ItemGroup>
 
     <ItemGroup>

+ 6 - 0
DotNet/ThirdParty/Unity.Mathematics/PropertyAttribute.cs

@@ -0,0 +1,6 @@
+namespace Unity.Mathematics.UnityEngine
+{
+    public class PropertyAttribute
+    {
+    }
+}

+ 0 - 600
DotNet/ThirdParty/UnityEngine/Mathf.cs

@@ -1,600 +0,0 @@
-using System;
-
-namespace UnityEngine
-{
-    public static class Mathf
-    {
-        public const float Epsilon = 0.00001F;
-        
-        /// <summary>
-        ///   <para>Returns the sine of angle f.</para>
-        /// </summary>
-        /// <param name="f">The input angle, in radians.</param>
-        /// <returns>
-        ///   <para>The return value between -1 and +1.</para>
-        /// </returns>
-        public static float Sin(float f)
-        {
-            return (float) Math.Sin((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the cosine of angle f.</para>
-        /// </summary>
-        /// <param name="f">The input angle, in radians.</param>
-        /// <returns>
-        ///   <para>The return value between -1 and 1.</para>
-        /// </returns>
-        public static float Cos(float f)
-        {
-            return (float) Math.Cos((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the tangent of angle f in radians.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Tan(float f)
-        {
-            return (float) Math.Tan((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the arc-sine of f - the angle in radians whose sine is f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Asin(float f)
-        {
-            return (float) Math.Asin((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the arc-cosine of f - the angle in radians whose cosine is f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Acos(float f)
-        {
-            return (float) Math.Acos((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the arc-tangent of f - the angle in radians whose tangent is f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Atan(float f)
-        {
-            return (float) Math.Atan((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the angle in radians whose Tan is y/x.</para>
-        /// </summary>
-        /// <param name="y"></param>
-        /// <param name="x"></param>
-        public static float Atan2(float y, float x)
-        {
-            return (float) Math.Atan2((double) y, (double) x);
-        }
-
-        /// <summary>
-        ///   <para>Returns square root of f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Sqrt(float f)
-        {
-            return (float) Math.Sqrt((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the absolute value of f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Abs(float f)
-        {
-            return Math.Abs(f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the absolute value of value.</para>
-        /// </summary>
-        /// <param name="value"></param>
-        public static int Abs(int value)
-        {
-            return Math.Abs(value);
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static float Min(float a, float b)
-        {
-            return (double) a >= (double) b? b : a;
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static float Min(params float[] values)
-        {
-            int length = values.Length;
-            if (length == 0)
-                return 0.0f;
-            float num = values[0];
-            for (int index = 1; index < length; ++index)
-            {
-                if ((double) values[index] < (double) num)
-                    num = values[index];
-            }
-
-            return num;
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static int Min(int a, int b)
-        {
-            return a >= b? b : a;
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static int Min(params int[] values)
-        {
-            int length = values.Length;
-            if (length == 0)
-                return 0;
-            int num = values[0];
-            for (int index = 1; index < length; ++index)
-            {
-                if (values[index] < num)
-                    num = values[index];
-            }
-
-            return num;
-        }
-
-        /// <summary>
-        ///   <para>Returns largest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static float Max(float a, float b)
-        {
-            return (double) a <= (double) b? b : a;
-        }
-
-        /// <summary>
-        ///   <para>Returns largest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static float Max(params float[] values)
-        {
-            int length = values.Length;
-            if (length == 0)
-                return 0.0f;
-            float num = values[0];
-            for (int index = 1; index < length; ++index)
-            {
-                if ((double) values[index] > (double) num)
-                    num = values[index];
-            }
-
-            return num;
-        }
-
-        /// <summary>
-        ///   <para>Returns the largest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static int Max(int a, int b)
-        {
-            return a <= b? b : a;
-        }
-
-        /// <summary>
-        ///   <para>Returns the largest of two or more values.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="values"></param>
-        public static int Max(params int[] values)
-        {
-            int length = values.Length;
-            if (length == 0)
-                return 0;
-            int num = values[0];
-            for (int index = 1; index < length; ++index)
-            {
-                if (values[index] > num)
-                    num = values[index];
-            }
-
-            return num;
-        }
-
-        /// <summary>
-        ///   <para>Returns f raised to power p.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        /// <param name="p"></param>
-        public static float Pow(float f, float p)
-        {
-            return (float) Math.Pow((double) f, (double) p);
-        }
-
-        /// <summary>
-        ///   <para>Returns e raised to the specified power.</para>
-        /// </summary>
-        /// <param name="power"></param>
-        public static float Exp(float power)
-        {
-            return (float) Math.Exp((double) power);
-        }
-
-        /// <summary>
-        ///   <para>Returns the logarithm of a specified number in a specified base.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        /// <param name="p"></param>
-        public static float Log(float f, float p)
-        {
-            return (float) Math.Log((double) f, (double) p);
-        }
-
-        /// <summary>
-        ///   <para>Returns the natural (base e) logarithm of a specified number.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Log(float f)
-        {
-            return (float) Math.Log((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the base 10 logarithm of a specified number.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Log10(float f)
-        {
-            return (float) Math.Log10((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest integer greater to or equal to f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Ceil(float f)
-        {
-            return (float) Math.Ceiling((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the largest integer smaller to or equal to f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Floor(float f)
-        {
-            return (float) Math.Floor((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns f rounded to the nearest integer.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Round(float f)
-        {
-            return (float) Math.Round((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the smallest integer greater to or equal to f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static int CeilToInt(float f)
-        {
-            return (int) Math.Ceiling((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the largest integer smaller to or equal to f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static int FloorToInt(float f)
-        {
-            return (int) Math.Floor((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns f rounded to the nearest integer.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static int RoundToInt(float f)
-        {
-            return (int) Math.Round((double) f);
-        }
-
-        /// <summary>
-        ///   <para>Returns the sign of f.</para>
-        /// </summary>
-        /// <param name="f"></param>
-        public static float Sign(float f)
-        {
-            return (double) f < 0.0? -1f : 1f;
-        }
-
-        /// <summary>
-        ///   <para>Clamps a value between a minimum float and maximum float value.</para>
-        /// </summary>
-        /// <param name="value"></param>
-        /// <param name="min"></param>
-        /// <param name="max"></param>
-        public static float Clamp(float value, float min, float max)
-        {
-            if ((double) value < (double) min)
-                value = min;
-            else if ((double) value > (double) max)
-                value = max;
-            return value;
-        }
-
-        /// <summary>
-        ///   <para>Clamps value between min and max and returns value.</para>
-        /// </summary>
-        /// <param name="value"></param>
-        /// <param name="min"></param>
-        /// <param name="max"></param>
-        public static int Clamp(int value, int min, int max)
-        {
-            if (value < min)
-                value = min;
-            else if (value > max)
-                value = max;
-            return value;
-        }
-
-        /// <summary>
-        ///   <para>Clamps value between 0 and 1 and returns value.</para>
-        /// </summary>
-        /// <param name="value"></param>
-        public static float Clamp01(float value)
-        {
-            if ((double) value < 0.0)
-                return 0.0f;
-            if ((double) value > 1.0)
-                return 1f;
-            return value;
-        }
-
-        /// <summary>
-        ///   <para>Linearly interpolates between a and b by t.</para>
-        /// </summary>
-        /// <param name="a">The start value.</param>
-        /// <param name="b">The end value.</param>
-        /// <param name="t">The interpolation value between the two floats.</param>
-        /// <returns>
-        ///   <para>The interpolated float result between the two float values.</para>
-        /// </returns>
-        public static float Lerp(float a, float b, float t)
-        {
-            return a + (b - a) * Mathf.Clamp01(t);
-        }
-
-        /// <summary>
-        ///   <para>Linearly interpolates between a and b by t with no limit to t.</para>
-        /// </summary>
-        /// <param name="a">The start value.</param>
-        /// <param name="b">The end value.</param>
-        /// <param name="t">The interpolation between the two floats.</param>
-        /// <returns>
-        ///   <para>The float value as a result from the linear interpolation.</para>
-        /// </returns>
-        public static float LerpUnclamped(float a, float b, float t)
-        {
-            return a + (b - a) * t;
-        }
-
-        /// <summary>
-        ///   <para>Same as Lerp but makes sure the values interpolate correctly when they wrap around 360 degrees.</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="t"></param>
-        public static float LerpAngle(float a, float b, float t)
-        {
-            float num = Mathf.Repeat(b - a, 360f);
-            if ((double) num > 180.0)
-                num -= 360f;
-            return a + num * Mathf.Clamp01(t);
-        }
-
-        /// <summary>
-        ///   <para>Moves a value current towards target.</para>
-        /// </summary>
-        /// <param name="current">The current value.</param>
-        /// <param name="target">The value to move towards.</param>
-        /// <param name="maxDelta">The maximum change that should be applied to the value.</param>
-        public static float MoveTowards(float current, float target, float maxDelta)
-        {
-            if ((double) Mathf.Abs(target - current) <= (double) maxDelta)
-                return target;
-            return current + Mathf.Sign(target - current) * maxDelta;
-        }
-
-        /// <summary>
-        ///   <para>Same as MoveTowards but makes sure the values interpolate correctly when they wrap around 360 degrees.</para>
-        /// </summary>
-        /// <param name="current"></param>
-        /// <param name="target"></param>
-        /// <param name="maxDelta"></param>
-        public static float MoveTowardsAngle(float current, float target, float maxDelta)
-        {
-            float num = Mathf.DeltaAngle(current, target);
-            if (-(double) maxDelta < (double) num && (double) num < (double) maxDelta)
-                return target;
-            target = current + num;
-            return Mathf.MoveTowards(current, target, maxDelta);
-        }
-
-        /// <summary>
-        ///   <para>Interpolates between min and max with smoothing at the limits.</para>
-        /// </summary>
-        /// <param name="from"></param>
-        /// <param name="to"></param>
-        /// <param name="t"></param>
-        public static float SmoothStep(float from, float to, float t)
-        {
-            t = Mathf.Clamp01(t);
-            t = (float) (-2.0 * (double) t * (double) t * (double) t + 3.0 * (double) t * (double) t);
-            return (float) ((double) to * (double) t + (double) from * (1.0 - (double) t));
-        }
-
-        public static float Gamma(float value, float absmax, float gamma)
-        {
-            bool flag = false;
-            if ((double) value < 0.0)
-                flag = true;
-            float num1 = Mathf.Abs(value);
-            if ((double) num1 > (double) absmax)
-                return !flag? num1 : -num1;
-            float num2 = Mathf.Pow(num1 / absmax, gamma) * absmax;
-            return !flag? num2 : -num2;
-        }
-
-        /// <summary>
-        ///   <para>Loops the value t, so that it is never larger than length and never smaller than 0.</para>
-        /// </summary>
-        /// <param name="t"></param>
-        /// <param name="length"></param>
-        public static float Repeat(float t, float length)
-        {
-            return Mathf.Clamp(t - Mathf.Floor(t / length) * length, 0.0f, length);
-        }
-
-        /// <summary>
-        ///   <para>PingPongs the value t, so that it is never larger than length and never smaller than 0.</para>
-        /// </summary>
-        /// <param name="t"></param>
-        /// <param name="length"></param>
-        public static float PingPong(float t, float length)
-        {
-            t = Mathf.Repeat(t, length * 2f);
-            return length - Mathf.Abs(t - length);
-        }
-
-        /// <summary>
-        ///   <para>Calculates the linear parameter t that produces the interpolant value within the range [a, b].</para>
-        /// </summary>
-        /// <param name="a"></param>
-        /// <param name="b"></param>
-        /// <param name="value"></param>
-        public static float InverseLerp(float a, float b, float value)
-        {
-            if ((double) a != (double) b)
-                return Mathf.Clamp01((float) (((double) value - (double) a) / ((double) b - (double) a)));
-            return 0.0f;
-        }
-
-        /// <summary>
-        ///   <para>Calculates the shortest difference between two given angles given in degrees.</para>
-        /// </summary>
-        /// <param name="current"></param>
-        /// <param name="target"></param>
-        public static float DeltaAngle(float current, float target)
-        {
-            float num = Mathf.Repeat(target - current, 360f);
-            if ((double) num > 180.0)
-                num -= 360f;
-            return num;
-        }
-
-        internal static bool LineIntersection(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, ref Vector2 result)
-        {
-            float num1 = p2.x - p1.x;
-            float num2 = p2.y - p1.y;
-            float num3 = p4.x - p3.x;
-            float num4 = p4.y - p3.y;
-            float num5 = (float) ((double) num1 * (double) num4 - (double) num2 * (double) num3);
-            if ((double) num5 == 0.0)
-                return false;
-            float num6 = p3.x - p1.x;
-            float num7 = p3.y - p1.y;
-            float num8 = (float) ((double) num6 * (double) num4 - (double) num7 * (double) num3) / num5;
-            result = new Vector2(p1.x + num8 * num1, p1.y + num8 * num2);
-            return true;
-        }
-
-        internal static bool LineSegmentIntersection(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, ref Vector2 result)
-        {
-            float num1 = p2.x - p1.x;
-            float num2 = p2.y - p1.y;
-            float num3 = p4.x - p3.x;
-            float num4 = p4.y - p3.y;
-            float num5 = (float) ((double) num1 * (double) num4 - (double) num2 * (double) num3);
-            if ((double) num5 == 0.0)
-                return false;
-            float num6 = p3.x - p1.x;
-            float num7 = p3.y - p1.y;
-            float num8 = (float) ((double) num6 * (double) num4 - (double) num7 * (double) num3) / num5;
-            if ((double) num8 < 0.0 || (double) num8 > 1.0)
-                return false;
-            float num9 = (float) ((double) num6 * (double) num2 - (double) num7 * (double) num1) / num5;
-            if ((double) num9 < 0.0 || (double) num9 > 1.0)
-                return false;
-            result = new Vector2(p1.x + num8 * num1, p1.y + num8 * num2);
-            return true;
-        }
-
-        internal static long RandomToLong(System.Random r)
-        {
-            byte[] buffer = new byte[8];
-            r.NextBytes(buffer);
-            return (long) BitConverter.ToUInt64(buffer, 0) & long.MaxValue;
-        }
-
-        public static Vector3 Rad2Deg(Vector3 radians)
-        {
-            return new Vector3(
-                               (float)(radians.x * 180 / System.Math.PI),
-                               (float)(radians.y * 180 / System.Math.PI),
-                               (float)(radians.z * 180 / System.Math.PI));
-        }
-        public static Vector3 Deg2Rad(Vector3 degrees)
-        {
-            return new Vector3(
-                               (float)(degrees.x * System.Math.PI / 180),
-                               (float)(degrees.y * System.Math.PI / 180),
-                               (float)(degrees.z * System.Math.PI / 180));
-        }
-        
-        public const float CosAngle20 = 0.9396926208f;
-        public const float CompareEpsilon = 0.000001f;
-        
-        public static bool CompareApproximate(float f0, float f1, float epsilon = CompareEpsilon)
-        {
-            return System.Math.Abs(f0 - f1) < epsilon;
-        }
-        public static bool CompareApproximate(double f0, double f1, float epsilon = CompareEpsilon)
-        {
-            return System.Math.Abs(f0 - f1) < epsilon;
-        }
-    }
-}

+ 0 - 100
DotNet/ThirdParty/UnityEngine/Matrix3x3.cs

@@ -1,100 +0,0 @@
-//**************************************************
-// Copyright©2018 何冠峰
-// Licensed under the MIT license
-//**************************************************
-
-namespace UnityEngine
-{
-	public struct Matrix3x3
-	{
-		public static readonly Matrix3x3 identity = new Matrix3x3(1, 0, 0, 0, 1, 0, 0, 0, 1);
-		
-		public float[] Data;
-
-		public Matrix3x3(float m0, float m1, float m2, float m3, float m4, float m5, float m6, float m7, float m8)
-		{
-			Data = new float[9];
-			Data[0] = m0; Data[3] = m3; Data[6] = m6;
-			Data[1] = m1; Data[4] = m4; Data[7] = m7;
-			Data[2] = m2; Data[5] = m5; Data[8] = m8;
-		}
-		
-		public void SetZero()
-		{
-			Data[0] = 0f; Data[3] = 0f; Data[6] = 0f;
-			Data[1] = 0f; Data[4] = 0f; Data[7] = 0f;
-			Data[2] = 0f; Data[5] = 0f; Data[8] = 0f;
-
-			//The floats are laid out
-			// m0   m3   m6	
-			// m1   m4   m7	
-			// m2   m5   m8	
-
-			//Data[0]=m00;  Data[3]=m01;  Data[6]=m02;
-			//Data[1]=m10;  Data[4]=m11;  Data[7]=m12;
-			//Data[2]=m20;  Data[5]=m21;  Data[8]=m22;
-
-			//Get(0, 0)   Get(0, 1)   Get(0, 2)
-			//Get(1, 0)   Get(1, 1)   Get(1, 2)
-			//Get(2, 0)   Get(2, 1)   Get(2, 2)
-		}
-
-		public float Get(int row, int column)
-		{
-			return Data[row + (column * 3)];
-		}
-		public void Set(int row, int column, float value)
-		{
-			Data[row + (column * 3)] = value;
-		}
-
-		public void SetOrthoNormalBasis(Vector3 inX, Vector3 inY, Vector3 inZ)
-		{
-			this.Set(0, 0, inX.x); this.Set(0, 1, inY.x); this.Set(0, 2, inZ.x);
-			this.Set(1, 0, inX.y); this.Set(1, 1, inY.y); this.Set(1, 2, inZ.y);
-			this.Set(2, 0, inX.z); this.Set(2, 1, inY.z); this.Set(2, 2, inZ.z);
-		}
-		public float GetDeterminant()
-		{
-			float fCofactor0 = Get(0, 0) * Get(1, 1) * Get(2, 2);
-			float fCofactor1 = Get(0, 1) * Get(1, 2) * Get(2, 0);
-			float fCofactor2 = Get(0, 2) * Get(1, 0) * Get(2, 1);
-
-			float fCofactor3 = Get(0, 2) * Get(1, 1) * Get(2, 0);
-			float fCofactor4 = Get(0, 1) * Get(1, 0) * Get(2, 2);
-			float fCofactor5 = Get(0, 0) * Get(1, 2) * Get(2, 1);
-
-			return fCofactor0 + fCofactor1 + fCofactor2 - fCofactor3 - fCofactor4 - fCofactor5;
-		}
-
-		// Right handed
-		public static bool LookRotationToMatrix(Vector3 viewVec, Vector3 upVec, out Matrix3x3 m)
-		{
-			m = Matrix3x3.identity;
-
-			Vector3 z = viewVec;
-			// compute u0
-			float mag = z.Length();
-			if (mag < Mathf.Epsilon)
-			{
-				return false;
-			}
-			z /= mag;
-
-			Vector3 x = Vector3.Cross(upVec, z);
-			mag = x.Length();
-			if (mag < Mathf.Epsilon)
-			{
-				return false;
-			}
-			x /= mag;
-
-			Vector3 y = Vector3.Cross(z, x);
-			if (!Mathf.CompareApproximate(y.Length(), 1.0F))
-				return false;
-
-			m.SetOrthoNormalBasis(x, y, z);
-			return true;
-		}
-	}
-}

+ 0 - 1412
DotNet/ThirdParty/UnityEngine/Matrix4x4.cs

@@ -1,1412 +0,0 @@
-using System;
-using System.Globalization;
-
-namespace UnityEngine
-{
-    [Serializable]
-    public struct Matrix4x4: IEquatable<Matrix4x4>
-    {
-        public static readonly Matrix4x4 identity = new Matrix4x4(1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f, 0.0f, 0.0f, 0.0f, 0.0f, 1f);
-        public float m00;
-        public float m01;
-        public float m02;
-        public float m03;
-        public float m10;
-        public float m11;
-        public float m12;
-        public float m13;
-        public float m20;
-        public float m21;
-        public float m22;
-        public float m23;
-        public float m30;
-        public float m31;
-        public float m32;
-        public float m33;
-        
-        public bool isIdentity
-        {
-            get
-            {
-                return this.m00 == 1f && this.m11 == 1f && this.m22 == 1f && this.m33 == 1f && // Check diagonal element first for early out.
-                this.m12 == 0.0f && this.m13 == 0.0f && this.m13 == 0.0f && this.m21 == 0.0f  && this.m23 == 0.0f && this.m23 == 0.0f  && this.m31 == 0.0f  && this.m32 == 0.0f  && this.m33 == 0.0f;
-            }
-        }
-
-        public Vector3 up
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = this.m01;
-                vector3.y = this.m11;
-                vector3.z = this.m21;
-                return vector3;
-            }
-            set
-            {
-                this.m01 = value.x;
-                this.m11 = value.y;
-                this.m21 = value.z;
-            }
-        }
-
-        public Vector3 down
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = -this.m01;
-                vector3.y = -this.m11;
-                vector3.z = -this.m21;
-                return vector3;
-            }
-            set
-            {
-                this.m01 = -value.x;
-                this.m11 = -value.y;
-                this.m21 = -value.z;
-            }
-        }
-
-        public Vector3 right
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = this.m00;
-                vector3.y = this.m10;
-                vector3.z = this.m20;
-                return vector3;
-            }
-            set
-            {
-                this.m00 = value.x;
-                this.m10 = value.y;
-                this.m20 = value.z;
-            }
-        }
-
-        public Vector3 left
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = -this.m00;
-                vector3.y = -this.m10;
-                vector3.z = -this.m20;
-                return vector3;
-            }
-            set
-            {
-                this.m00 = -value.x;
-                this.m10 = -value.y;
-                this.m20 = -value.z;
-            }
-        }
-
-        public Vector3 forward
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = -this.m02;
-                vector3.y = -this.m12;
-                vector3.z = -this.m22;
-                return vector3;
-            }
-            set
-            {
-                this.m02 = -value.x;
-                this.m12 = -value.y;
-                this.m22 = -value.z;
-            }
-        }
-
-        public Vector3 back
-        {
-            get
-            {
-                Vector3 vector3;
-                vector3.x = this.m02;
-                vector3.y = this.m12;
-                vector3.z = this.m22;
-                return vector3;
-            }
-            set
-            {
-                this.m02 = value.x;
-                this.m12 = value.y;
-                this.m22 = value.z;
-            }
-        }
-
-        public unsafe float this[int row, int col]
-        {
-            get
-            {
-                fixed (float* numPtr = &this.m00)
-                    return numPtr[row * 4 + col];
-            }
-            set
-            {
-                fixed (float* numPtr = &this.m00)
-                    numPtr[row * 4 + col] = value;
-            }
-        }
-
-        public unsafe float this[int index]
-        {
-            get
-            {
-                fixed (float* numPtr = &this.m00)
-                    return numPtr[index];
-            }
-            set
-            {
-                fixed (float* numPtr = &this.m00)
-                    numPtr[index] = value;
-            }
-        }
-
-        public Vector4 GetRow(int index)
-        {
-            Vector4 vector4;
-            vector4.x = this[index, 0];
-            vector4.y = this[index, 1];
-            vector4.z = this[index, 2];
-            vector4.w = this[index, 3];
-            return vector4;
-        }
-
-        public void SetRow(int index, Vector4 value)
-        {
-            this[index, 0] = value.x;
-            this[index, 1] = value.y;
-            this[index, 2] = value.z;
-            this[index, 3] = value.w;
-        }
-
-        public Vector4 GetColumn(int index)
-        {
-            Vector4 vector4;
-            vector4.x = this[0, index];
-            vector4.y = this[1, index];
-            vector4.z = this[2, index];
-            vector4.w = this[3, index];
-            return vector4;
-        }
-
-        public void SetColumn(int index, Vector4 value)
-        {
-            this[0, index] = value.x;
-            this[1, index] = value.y;
-            this[2, index] = value.z;
-            this[3, index] = value.w;
-        }
-
-        public Matrix4x4(
-            float m00, float m01, float m02, float m03, float m10, float m11, float m12, float m13, float m20, float m21, float m22, float m23,
-            float m30, float m31, float m32, float m33)
-        {
-            this.m00 = m00;
-            this.m01 = m01;
-            this.m02 = m02;
-            this.m03 = m03;
-            this.m10 = m10;
-            this.m11 = m11;
-            this.m12 = m12;
-            this.m13 = m13;
-            this.m20 = m20;
-            this.m21 = m21;
-            this.m22 = m22;
-            this.m23 = m23;
-            this.m30 = m30;
-            this.m31 = m31;
-            this.m32 = m32;
-            this.m33 = m33;
-        }
-
-        public static Matrix4x4 CreateTranslation(Vector3 position)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = 1f;
-            matrix44.m01 = 0.0f;
-            matrix44.m02 = 0.0f;
-            matrix44.m03 = position.x;
-            matrix44.m10 = 0.0f;
-            matrix44.m11 = 1f;
-            matrix44.m12 = 0.0f;
-            matrix44.m13 = position.y;
-            matrix44.m20 = 0.0f;
-            matrix44.m21 = 0.0f;
-            matrix44.m22 = 1f;
-            matrix44.m23 = position.z;
-            matrix44.m30 = 0.0f;
-            matrix44.m31 = 0.0f;
-            matrix44.m32 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public Matrix4x4 inverse
-        {
-            get
-            {
-                return Matrix4x4.Invert(this);
-            }
-        }
-
-        public static void CreateTranslation(ref Vector3 position, out Matrix4x4 matrix)
-        {
-            matrix.m00 = 1f;
-            matrix.m01 = 0.0f;
-            matrix.m02 = 0.0f;
-            matrix.m03 = position.x;
-            matrix.m10 = 0.0f;
-            matrix.m11 = 1f;
-            matrix.m12 = 0.0f;
-            matrix.m13 = position.y;
-            matrix.m20 = 0.0f;
-            matrix.m21 = 0.0f;
-            matrix.m22 = 1f;
-            matrix.m23 = position.z;
-            matrix.m30 = 0.0f;
-            matrix.m31 = 0.0f;
-            matrix.m32 = 0.0f;
-            matrix.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateScale(Vector3 scales)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = scales.x;
-            matrix44.m01 = 0.0f;
-            matrix44.m02 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m10 = 0.0f;
-            matrix44.m11 = scales.y;
-            matrix44.m12 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m20 = 0.0f;
-            matrix44.m21 = 0.0f;
-            matrix44.m22 = scales.z;
-            matrix44.m23 = 0.0f;
-            matrix44.m30 = 0.0f;
-            matrix44.m31 = 0.0f;
-            matrix44.m32 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s)
-        {
-            Matrix4x4 m1 = CreateTranslation(pos);
-            Matrix4x4 m2 = CreateFromQuaternion(q);
-            Matrix4x4 m3 = CreateScale(s);
-            return m1 * m2 * m3;
-        }
-
-        public static Matrix4x4 Scale(Vector3 scales)
-        {
-            Matrix4x4 m1;
-            CreateScale(ref scales, out m1);
-            return m1;
-        }
-
-        public static void CreateScale(ref Vector3 scales, out Matrix4x4 matrix)
-        {
-            matrix.m00 = scales.x;
-            matrix.m01 = 0.0f;
-            matrix.m02 = 0.0f;
-            matrix.m03 = 0.0f;
-            matrix.m10 = 0.0f;
-            matrix.m11 = scales.y;
-            matrix.m12 = 0.0f;
-            matrix.m13 = 0.0f;
-            matrix.m20 = 0.0f;
-            matrix.m21 = 0.0f;
-            matrix.m22 = scales.z;
-            matrix.m23 = 0.0f;
-            matrix.m30 = 0.0f;
-            matrix.m31 = 0.0f;
-            matrix.m32 = 0.0f;
-            matrix.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = 2f / width;
-            matrix44.m10 = matrix44.m20 = matrix44.m30 = 0.0f;
-            matrix44.m11 = 2f / height;
-            matrix44.m01 = matrix44.m21 = matrix44.m31 = 0.0f;
-            matrix44.m22 = (float) (1.0 / ((double) zNearPlane - (double) zFarPlane));
-            matrix44.m02 = matrix44.m12 = matrix44.m32 = 0.0f;
-            matrix44.m03 = matrix44.m13 = 0.0f;
-            matrix44.m23 = zNearPlane / (zNearPlane - zFarPlane);
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane, out Matrix4x4 matrix)
-        {
-            matrix.m00 = 2f / width;
-            matrix.m10 = matrix.m20 = matrix.m30 = 0.0f;
-            matrix.m11 = 2f / height;
-            matrix.m01 = matrix.m21 = matrix.m31 = 0.0f;
-            matrix.m22 = (float) (1.0 / ((double) zNearPlane - (double) zFarPlane));
-            matrix.m02 = matrix.m12 = matrix.m32 = 0.0f;
-            matrix.m03 = matrix.m13 = 0.0f;
-            matrix.m23 = zNearPlane / (zNearPlane - zFarPlane);
-            matrix.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)
-        {
-            Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);
-            Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));
-            Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);
-            Matrix4x4 matrix44;
-            matrix44.m00 = vector3_2.x;
-            matrix44.m10 = vector1.x;
-            matrix44.m20 = vector3_1.x;
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = vector3_2.y;
-            matrix44.m11 = vector1.y;
-            matrix44.m21 = vector3_1.y;
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = vector3_2.z;
-            matrix44.m12 = vector1.z;
-            matrix44.m22 = vector3_1.z;
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = -Vector3.Dot(vector3_2, cameraPosition);
-            matrix44.m13 = -Vector3.Dot(vector1, cameraPosition);
-            matrix44.m23 = -Vector3.Dot(vector3_1, cameraPosition);
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateLookAt(ref Vector3 cameraPosition, ref Vector3 cameraTarget, ref Vector3 cameraUpVector, out Matrix4x4 matrix)
-        {
-            Vector3 vector3_1 = Vector3.Normalize(cameraPosition - cameraTarget);
-            Vector3 vector3_2 = Vector3.Normalize(Vector3.Cross(cameraUpVector, vector3_1));
-            Vector3 vector1 = Vector3.Cross(vector3_1, vector3_2);
-            matrix.m00 = vector3_2.x;
-            matrix.m10 = vector1.x;
-            matrix.m20 = vector3_1.x;
-            matrix.m30 = 0.0f;
-            matrix.m01 = vector3_2.y;
-            matrix.m11 = vector1.y;
-            matrix.m21 = vector3_1.y;
-            matrix.m31 = 0.0f;
-            matrix.m02 = vector3_2.z;
-            matrix.m12 = vector1.z;
-            matrix.m22 = vector3_1.z;
-            matrix.m32 = 0.0f;
-            matrix.m03 = -Vector3.Dot(vector3_2, cameraPosition);
-            matrix.m13 = -Vector3.Dot(vector1, cameraPosition);
-            matrix.m23 = -Vector3.Dot(vector3_1, cameraPosition);
-            matrix.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateFromQuaternion(Quaternion quaternion)
-        {
-            float num1 = quaternion.x * quaternion.x;
-            float num2 = quaternion.y * quaternion.y;
-            float num3 = quaternion.z * quaternion.z;
-            float num4 = quaternion.x * quaternion.y;
-            float num5 = quaternion.z * quaternion.w;
-            float num6 = quaternion.z * quaternion.x;
-            float num7 = quaternion.y * quaternion.w;
-            float num8 = quaternion.y * quaternion.z;
-            float num9 = quaternion.x * quaternion.w;
-            Matrix4x4 matrix44;
-            matrix44.m00 = (float) (1.0 - 2.0 * ((double) num2 + (double) num3));
-            matrix44.m10 = (float) (2.0 * ((double) num4 + (double) num5));
-            matrix44.m20 = (float) (2.0 * ((double) num6 - (double) num7));
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = (float) (2.0 * ((double) num4 - (double) num5));
-            matrix44.m11 = (float) (1.0 - 2.0 * ((double) num3 + (double) num1));
-            matrix44.m21 = (float) (2.0 * ((double) num8 + (double) num9));
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = (float) (2.0 * ((double) num6 + (double) num7));
-            matrix44.m12 = (float) (2.0 * ((double) num8 - (double) num9));
-            matrix44.m22 = (float) (1.0 - 2.0 * ((double) num2 + (double) num1));
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m23 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix4x4 matrix)
-        {
-            float num1 = quaternion.x * quaternion.x;
-            float num2 = quaternion.y * quaternion.y;
-            float num3 = quaternion.z * quaternion.z;
-            float num4 = quaternion.x * quaternion.y;
-            float num5 = quaternion.z * quaternion.w;
-            float num6 = quaternion.z * quaternion.x;
-            float num7 = quaternion.y * quaternion.w;
-            float num8 = quaternion.y * quaternion.z;
-            float num9 = quaternion.x * quaternion.w;
-            matrix.m00 = (float) (1.0 - 2.0 * ((double) num2 + (double) num3));
-            matrix.m10 = (float) (2.0 * ((double) num4 + (double) num5));
-            matrix.m20 = (float) (2.0 * ((double) num6 - (double) num7));
-            matrix.m30 = 0.0f;
-            matrix.m01 = (float) (2.0 * ((double) num4 - (double) num5));
-            matrix.m11 = (float) (1.0 - 2.0 * ((double) num3 + (double) num1));
-            matrix.m21 = (float) (2.0 * ((double) num8 + (double) num9));
-            matrix.m31 = 0.0f;
-            matrix.m02 = (float) (2.0 * ((double) num6 + (double) num7));
-            matrix.m12 = (float) (2.0 * ((double) num8 - (double) num9));
-            matrix.m22 = (float) (1.0 - 2.0 * ((double) num2 + (double) num1));
-            matrix.m32 = 0.0f;
-            matrix.m03 = 0.0f;
-            matrix.m13 = 0.0f;
-            matrix.m23 = 0.0f;
-            matrix.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateFromYawPitchRoll(float yaw, float pitch, float roll)
-        {
-            Quaternion result;
-            Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result);
-            return Matrix4x4.CreateFromQuaternion(result);
-        }
-
-        public static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Matrix4x4 result)
-        {
-            Quaternion result1;
-            Quaternion.CreateFromYawPitchRoll(yaw, pitch, roll, out result1);
-            result = Matrix4x4.CreateFromQuaternion(result1);
-        }
-
-        public static Matrix4x4 CreateRotationX(float radians)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            Matrix4x4 matrix44;
-            matrix44.m00 = 1f;
-            matrix44.m10 = 0.0f;
-            matrix44.m20 = 0.0f;
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = 0.0f;
-            matrix44.m11 = num1;
-            matrix44.m21 = num2;
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = 0.0f;
-            matrix44.m12 = -num2;
-            matrix44.m22 = num1;
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m23 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateRotationX(float radians, out Matrix4x4 result)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            result.m00 = 1f;
-            result.m10 = 0.0f;
-            result.m20 = 0.0f;
-            result.m30 = 0.0f;
-            result.m01 = 0.0f;
-            result.m11 = num1;
-            result.m21 = num2;
-            result.m31 = 0.0f;
-            result.m02 = 0.0f;
-            result.m12 = -num2;
-            result.m22 = num1;
-            result.m32 = 0.0f;
-            result.m03 = 0.0f;
-            result.m13 = 0.0f;
-            result.m23 = 0.0f;
-            result.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateRotationY(float radians)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            Matrix4x4 matrix44;
-            matrix44.m00 = num1;
-            matrix44.m10 = 0.0f;
-            matrix44.m20 = -num2;
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = 0.0f;
-            matrix44.m11 = 1f;
-            matrix44.m21 = 0.0f;
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = num2;
-            matrix44.m12 = 0.0f;
-            matrix44.m22 = num1;
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m23 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateRotationY(float radians, out Matrix4x4 result)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            result.m00 = num1;
-            result.m10 = 0.0f;
-            result.m20 = -num2;
-            result.m30 = 0.0f;
-            result.m01 = 0.0f;
-            result.m11 = 1f;
-            result.m21 = 0.0f;
-            result.m31 = 0.0f;
-            result.m02 = num2;
-            result.m12 = 0.0f;
-            result.m22 = num1;
-            result.m32 = 0.0f;
-            result.m03 = 0.0f;
-            result.m13 = 0.0f;
-            result.m23 = 0.0f;
-            result.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateRotationZ(float radians)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            Matrix4x4 matrix44;
-            matrix44.m00 = num1;
-            matrix44.m10 = num2;
-            matrix44.m20 = 0.0f;
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = -num2;
-            matrix44.m11 = num1;
-            matrix44.m21 = 0.0f;
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = 0.0f;
-            matrix44.m12 = 0.0f;
-            matrix44.m22 = 1f;
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m23 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateRotationZ(float radians, out Matrix4x4 result)
-        {
-            float num1 = (float) Math.Cos((double) radians);
-            float num2 = (float) Math.Sin((double) radians);
-            result.m00 = num1;
-            result.m10 = num2;
-            result.m20 = 0.0f;
-            result.m30 = 0.0f;
-            result.m01 = -num2;
-            result.m11 = num1;
-            result.m21 = 0.0f;
-            result.m31 = 0.0f;
-            result.m02 = 0.0f;
-            result.m12 = 0.0f;
-            result.m22 = 1f;
-            result.m32 = 0.0f;
-            result.m03 = 0.0f;
-            result.m13 = 0.0f;
-            result.m23 = 0.0f;
-            result.m33 = 1f;
-        }
-
-        public static Matrix4x4 CreateFromAxisAngle(Vector3 axis, float angle)
-        {
-            float x = axis.x;
-            float y = axis.y;
-            float z = axis.z;
-            float num1 = (float) Math.Sin((double) angle);
-            float num2 = (float) Math.Cos((double) angle);
-            float num3 = x * x;
-            float num4 = y * y;
-            float num5 = z * z;
-            float num6 = x * y;
-            float num7 = x * z;
-            float num8 = y * z;
-            Matrix4x4 matrix44;
-            matrix44.m00 = num3 + num2 * (1f - num3);
-            matrix44.m10 = (float) ((double) num6 - (double) num2 * (double) num6 + (double) num1 * (double) z);
-            matrix44.m20 = (float) ((double) num7 - (double) num2 * (double) num7 - (double) num1 * (double) y);
-            matrix44.m30 = 0.0f;
-            matrix44.m01 = (float) ((double) num6 - (double) num2 * (double) num6 - (double) num1 * (double) z);
-            matrix44.m11 = num4 + num2 * (1f - num4);
-            matrix44.m21 = (float) ((double) num8 - (double) num2 * (double) num8 + (double) num1 * (double) x);
-            matrix44.m31 = 0.0f;
-            matrix44.m02 = (float) ((double) num7 - (double) num2 * (double) num7 + (double) num1 * (double) y);
-            matrix44.m12 = (float) ((double) num8 - (double) num2 * (double) num8 - (double) num1 * (double) x);
-            matrix44.m22 = num5 + num2 * (1f - num5);
-            matrix44.m32 = 0.0f;
-            matrix44.m03 = 0.0f;
-            matrix44.m13 = 0.0f;
-            matrix44.m23 = 0.0f;
-            matrix44.m33 = 1f;
-            return matrix44;
-        }
-
-        public static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Matrix4x4 result)
-        {
-            float x = axis.x;
-            float y = axis.y;
-            float z = axis.z;
-            float num1 = (float) Math.Sin((double) angle);
-            float num2 = (float) Math.Cos((double) angle);
-            float num3 = x * x;
-            float num4 = y * y;
-            float num5 = z * z;
-            float num6 = x * y;
-            float num7 = x * z;
-            float num8 = y * z;
-            result.m00 = num3 + num2 * (1f - num3);
-            result.m10 = (float) ((double) num6 - (double) num2 * (double) num6 + (double) num1 * (double) z);
-            result.m20 = (float) ((double) num7 - (double) num2 * (double) num7 - (double) num1 * (double) y);
-            result.m30 = 0.0f;
-            result.m01 = (float) ((double) num6 - (double) num2 * (double) num6 - (double) num1 * (double) z);
-            result.m11 = num4 + num2 * (1f - num4);
-            result.m21 = (float) ((double) num8 - (double) num2 * (double) num8 + (double) num1 * (double) x);
-            result.m31 = 0.0f;
-            result.m02 = (float) ((double) num7 - (double) num2 * (double) num7 + (double) num1 * (double) y);
-            result.m12 = (float) ((double) num8 - (double) num2 * (double) num8 - (double) num1 * (double) x);
-            result.m22 = num5 + num2 * (1f - num5);
-            result.m32 = 0.0f;
-            result.m03 = 0.0f;
-            result.m13 = 0.0f;
-            result.m23 = 0.0f;
-            result.m33 = 1f;
-        }
-
-        public void Decompose(out Vector3 scale, out Quaternion rotation, out Vector3 translation)
-        {
-            Matrix4x4 identity = Matrix4x4.identity;
-            float num1 = 1f / (float) Math.Sqrt((double) this[0, 0] * (double) this[0, 0] + (double) this[1, 0] * (double) this[1, 0] +
-                                                (double) this[2, 0] * (double) this[2, 0]);
-            identity[0, 0] = this[0, 0] * num1;
-            identity[1, 0] = this[1, 0] * num1;
-            identity[2, 0] = this[2, 0] * num1;
-            float num2 = (float) ((double) identity[0, 0] * (double) this[0, 1] + (double) identity[1, 0] * (double) this[1, 1] +
-                (double) identity[2, 0] * (double) this[2, 1]);
-            identity[0, 1] = this[0, 1] - num2 * identity[0, 0];
-            identity[1, 1] = this[1, 1] - num2 * identity[1, 0];
-            identity[2, 1] = this[2, 1] - num2 * identity[2, 0];
-            float num3 = 1f / (float) Math.Sqrt((double) identity[0, 1] * (double) identity[0, 1] +
-                                                (double) identity[1, 1] * (double) identity[1, 1] +
-                                                (double) identity[2, 1] * (double) identity[2, 1]);
-            identity[0, 1] *= num3;
-            identity[1, 1] *= num3;
-            identity[2, 1] *= num3;
-            float num4 = (float) ((double) identity[0, 0] * (double) this[0, 2] + (double) identity[1, 0] * (double) this[1, 2] +
-                (double) identity[2, 0] * (double) this[2, 2]);
-            identity[0, 2] = this[0, 2] - num4 * identity[0, 0];
-            identity[1, 2] = this[1, 2] - num4 * identity[1, 0];
-            identity[2, 2] = this[2, 2] - num4 * identity[2, 0];
-            float num5 = (float) ((double) identity[0, 1] * (double) this[0, 2] + (double) identity[1, 1] * (double) this[1, 2] +
-                (double) identity[2, 1] * (double) this[2, 2]);
-            identity[0, 2] -= num5 * identity[0, 1];
-            identity[1, 2] -= num5 * identity[1, 1];
-            identity[2, 2] -= num5 * identity[2, 1];
-            float num6 = 1f / (float) Math.Sqrt((double) identity[0, 2] * (double) identity[0, 2] +
-                                                (double) identity[1, 2] * (double) identity[1, 2] +
-                                                (double) identity[2, 2] * (double) identity[2, 2]);
-            identity[0, 2] *= num6;
-            identity[1, 2] *= num6;
-            identity[2, 2] *= num6;
-            if ((double) identity[0, 0] * (double) identity[1, 1] * (double) identity[2, 2] +
-                (double) identity[0, 1] * (double) identity[1, 2] * (double) identity[2, 0] +
-                (double) identity[0, 2] * (double) identity[1, 0] * (double) identity[2, 1] -
-                (double) identity[0, 2] * (double) identity[1, 1] * (double) identity[2, 0] -
-                (double) identity[0, 1] * (double) identity[1, 0] * (double) identity[2, 2] -
-                (double) identity[0, 0] * (double) identity[1, 2] * (double) identity[2, 1] < 0.0)
-            {
-                for (int index1 = 0; index1 < 3; ++index1)
-                {
-                    for (int index2 = 0; index2 < 3; ++index2)
-                        identity[index1, index2] = -identity[index1, index2];
-                }
-            }
-
-            scale =
-                    new
-                            Vector3((float) ((double) identity[0, 0] * (double) this[0, 0] + (double) identity[1, 0] * (double) this[1, 0] + (double) identity[2, 0] * (double) this[2, 0]),
-                                    (float) ((double) identity[0, 1] * (double) this[0, 1] + (double) identity[1, 1] * (double) this[1, 1] +
-                                        (double) identity[2, 1] * (double) this[2, 1]),
-                                    (float) ((double) identity[0, 2] * (double) this[0, 2] + (double) identity[1, 2] * (double) this[1, 2] +
-                                        (double) identity[2, 2] * (double) this[2, 2]));
-            rotation = Quaternion.CreateFromRotationMatrix(identity);
-            translation = new Vector3(this[0, 3], this[1, 3], this[2, 3]);
-        }
-
-        public override string ToString()
-        {
-            CultureInfo currentCulture = CultureInfo.CurrentCulture;
-            return
-                    string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
-                                  (object) this.m00.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m01.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m02.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m03.ToString((IFormatProvider) currentCulture)) +
-                    string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
-                                  (object) this.m10.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m11.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m12.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m13.ToString((IFormatProvider) currentCulture)) +
-                    string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}; ",
-                                  (object) this.m20.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m21.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m22.ToString((IFormatProvider) currentCulture),
-                                  (object) this.m23.ToString((IFormatProvider) currentCulture)) + string.Format((IFormatProvider) currentCulture,
-                                                                                                                "{0}, {1}, {2}, {3}",
-                                                                                                                (object) this.m30
-                                                                                                                        .ToString((IFormatProvider)
-                                                                                                                                  currentCulture),
-                                                                                                                (object) this.m31
-                                                                                                                        .ToString((IFormatProvider)
-                                                                                                                                  currentCulture),
-                                                                                                                (object) this.m32
-                                                                                                                        .ToString((IFormatProvider)
-                                                                                                                                  currentCulture),
-                                                                                                                (object) this.m33
-                                                                                                                        .ToString((IFormatProvider)
-                                                                                                                                  currentCulture));
-        }
-
-        public bool Equals(Matrix4x4 other)
-        {
-            if ((double) this.m00 == (double) other.m00 && (double) this.m11 == (double) other.m11 &&
-                ((double) this.m22 == (double) other.m22 && (double) this.m33 == (double) other.m33) &&
-                ((double) this.m01 == (double) other.m01 && (double) this.m02 == (double) other.m02 &&
-                    ((double) this.m03 == (double) other.m03 && (double) this.m10 == (double) other.m10)) &&
-                ((double) this.m12 == (double) other.m12 && (double) this.m13 == (double) other.m13 &&
-                    ((double) this.m20 == (double) other.m20 && (double) this.m21 == (double) other.m21) &&
-                    ((double) this.m23 == (double) other.m23 && (double) this.m30 == (double) other.m30 && (double) this.m31 == (double) other.m31)))
-                return (double) this.m32 == (double) other.m32;
-            return false;
-        }
-
-        public override bool Equals(object obj)
-        {
-            bool flag = false;
-            if (obj is Matrix4x4)
-                flag = this.Equals((Matrix4x4) obj);
-            return flag;
-        }
-
-        public override int GetHashCode()
-        {
-            return this.m00.GetHashCode() + this.m01.GetHashCode() + this.m02.GetHashCode() + this.m03.GetHashCode() + this.m10.GetHashCode() +
-                    this.m11.GetHashCode() + this.m12.GetHashCode() + this.m13.GetHashCode() + this.m20.GetHashCode() + this.m21.GetHashCode() +
-                    this.m22.GetHashCode() + this.m23.GetHashCode() + this.m30.GetHashCode() + this.m31.GetHashCode() + this.m32.GetHashCode() +
-                    this.m33.GetHashCode();
-        }
-
-        public static Matrix4x4 Transpose(Matrix4x4 matrix)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = matrix.m00;
-            matrix44.m01 = matrix.m10;
-            matrix44.m02 = matrix.m20;
-            matrix44.m03 = matrix.m30;
-            matrix44.m10 = matrix.m01;
-            matrix44.m11 = matrix.m11;
-            matrix44.m12 = matrix.m21;
-            matrix44.m13 = matrix.m31;
-            matrix44.m20 = matrix.m02;
-            matrix44.m21 = matrix.m12;
-            matrix44.m22 = matrix.m22;
-            matrix44.m23 = matrix.m32;
-            matrix44.m30 = matrix.m03;
-            matrix44.m31 = matrix.m13;
-            matrix44.m32 = matrix.m23;
-            matrix44.m33 = matrix.m33;
-            return matrix44;
-        }
-
-        public static void Transpose(ref Matrix4x4 matrix, out Matrix4x4 result)
-        {
-            result.m00 = matrix.m00;
-            result.m01 = matrix.m10;
-            result.m02 = matrix.m20;
-            result.m03 = matrix.m30;
-            result.m10 = matrix.m01;
-            result.m11 = matrix.m11;
-            result.m12 = matrix.m21;
-            result.m13 = matrix.m31;
-            result.m20 = matrix.m02;
-            result.m21 = matrix.m12;
-            result.m22 = matrix.m22;
-            result.m23 = matrix.m32;
-            result.m30 = matrix.m03;
-            result.m31 = matrix.m13;
-            result.m32 = matrix.m23;
-            result.m33 = matrix.m33;
-        }
-
-        public float Determinant()
-        {
-            float m00 = this.m00;
-            float m10 = this.m10;
-            float m20 = this.m20;
-            float m30 = this.m30;
-            float m01 = this.m01;
-            float m11 = this.m11;
-            float m21 = this.m21;
-            float m31 = this.m31;
-            float m02 = this.m02;
-            float m12 = this.m12;
-            float m22 = this.m22;
-            float m32 = this.m32;
-            float m03 = this.m03;
-            float m13 = this.m13;
-            float m23 = this.m23;
-            float m33 = this.m33;
-            float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
-            float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
-            float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
-            float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
-            float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
-            float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
-            return (float) ((double) m00 * ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3) -
-                (double) m10 * ((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5) +
-                (double) m20 * ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6) -
-                (double) m30 * ((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6));
-        }
-
-        public static Matrix4x4 Invert(Matrix4x4 matrix)
-        {
-            float m00 = matrix.m00;
-            float m10 = matrix.m10;
-            float m20 = matrix.m20;
-            float m30 = matrix.m30;
-            float m01 = matrix.m01;
-            float m11 = matrix.m11;
-            float m21 = matrix.m21;
-            float m31 = matrix.m31;
-            float m02 = matrix.m02;
-            float m12 = matrix.m12;
-            float m22 = matrix.m22;
-            float m32 = matrix.m32;
-            float m03 = matrix.m03;
-            float m13 = matrix.m13;
-            float m23 = matrix.m23;
-            float m33 = matrix.m33;
-            float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
-            float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
-            float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
-            float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
-            float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
-            float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
-            float num7 = (float) ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3);
-            float num8 = (float) -((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5);
-            float num9 = (float) ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6);
-            float num10 = (float) -((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6);
-            float num11 = (float) (1.0 / ((double) m00 * (double) num7 + (double) m10 * (double) num8 + (double) m20 * (double) num9 +
-                (double) m30 * (double) num10));
-            Matrix4x4 matrix44;
-            matrix44.m00 = num7 * num11;
-            matrix44.m01 = num8 * num11;
-            matrix44.m02 = num9 * num11;
-            matrix44.m03 = num10 * num11;
-            matrix44.m10 = (float) -((double) m10 * (double) num1 - (double) m20 * (double) num2 + (double) m30 * (double) num3) * num11;
-            matrix44.m11 = (float) ((double) m00 * (double) num1 - (double) m20 * (double) num4 + (double) m30 * (double) num5) * num11;
-            matrix44.m12 = (float) -((double) m00 * (double) num2 - (double) m10 * (double) num4 + (double) m30 * (double) num6) * num11;
-            matrix44.m13 = (float) ((double) m00 * (double) num3 - (double) m10 * (double) num5 + (double) m20 * (double) num6) * num11;
-            float num12 = (float) ((double) m21 * (double) m33 - (double) m31 * (double) m23);
-            float num13 = (float) ((double) m11 * (double) m33 - (double) m31 * (double) m13);
-            float num14 = (float) ((double) m11 * (double) m23 - (double) m21 * (double) m13);
-            float num15 = (float) ((double) m01 * (double) m33 - (double) m31 * (double) m03);
-            float num16 = (float) ((double) m01 * (double) m23 - (double) m21 * (double) m03);
-            float num17 = (float) ((double) m01 * (double) m13 - (double) m11 * (double) m03);
-            matrix44.m20 = (float) ((double) m10 * (double) num12 - (double) m20 * (double) num13 + (double) m30 * (double) num14) * num11;
-            matrix44.m21 = (float) -((double) m00 * (double) num12 - (double) m20 * (double) num15 + (double) m30 * (double) num16) * num11;
-            matrix44.m22 = (float) ((double) m00 * (double) num13 - (double) m10 * (double) num15 + (double) m30 * (double) num17) * num11;
-            matrix44.m23 = (float) -((double) m00 * (double) num14 - (double) m10 * (double) num16 + (double) m20 * (double) num17) * num11;
-            float num18 = (float) ((double) m21 * (double) m32 - (double) m31 * (double) m22);
-            float num19 = (float) ((double) m11 * (double) m32 - (double) m31 * (double) m12);
-            float num20 = (float) ((double) m11 * (double) m22 - (double) m21 * (double) m12);
-            float num21 = (float) ((double) m01 * (double) m32 - (double) m31 * (double) m02);
-            float num22 = (float) ((double) m01 * (double) m22 - (double) m21 * (double) m02);
-            float num23 = (float) ((double) m01 * (double) m12 - (double) m11 * (double) m02);
-            matrix44.m30 = (float) -((double) m10 * (double) num18 - (double) m20 * (double) num19 + (double) m30 * (double) num20) * num11;
-            matrix44.m31 = (float) ((double) m00 * (double) num18 - (double) m20 * (double) num21 + (double) m30 * (double) num22) * num11;
-            matrix44.m32 = (float) -((double) m00 * (double) num19 - (double) m10 * (double) num21 + (double) m30 * (double) num23) * num11;
-            matrix44.m33 = (float) ((double) m00 * (double) num20 - (double) m10 * (double) num22 + (double) m20 * (double) num23) * num11;
-            return matrix44;
-        }
-
-        public static void Invert(ref Matrix4x4 matrix, out Matrix4x4 result)
-        {
-            float m00 = matrix.m00;
-            float m10 = matrix.m10;
-            float m20 = matrix.m20;
-            float m30 = matrix.m30;
-            float m01 = matrix.m01;
-            float m11 = matrix.m11;
-            float m21 = matrix.m21;
-            float m31 = matrix.m31;
-            float m02 = matrix.m02;
-            float m12 = matrix.m12;
-            float m22 = matrix.m22;
-            float m32 = matrix.m32;
-            float m03 = matrix.m03;
-            float m13 = matrix.m13;
-            float m23 = matrix.m23;
-            float m33 = matrix.m33;
-            float num1 = (float) ((double) m22 * (double) m33 - (double) m32 * (double) m23);
-            float num2 = (float) ((double) m12 * (double) m33 - (double) m32 * (double) m13);
-            float num3 = (float) ((double) m12 * (double) m23 - (double) m22 * (double) m13);
-            float num4 = (float) ((double) m02 * (double) m33 - (double) m32 * (double) m03);
-            float num5 = (float) ((double) m02 * (double) m23 - (double) m22 * (double) m03);
-            float num6 = (float) ((double) m02 * (double) m13 - (double) m12 * (double) m03);
-            float num7 = (float) ((double) m11 * (double) num1 - (double) m21 * (double) num2 + (double) m31 * (double) num3);
-            float num8 = (float) -((double) m01 * (double) num1 - (double) m21 * (double) num4 + (double) m31 * (double) num5);
-            float num9 = (float) ((double) m01 * (double) num2 - (double) m11 * (double) num4 + (double) m31 * (double) num6);
-            float num10 = (float) -((double) m01 * (double) num3 - (double) m11 * (double) num5 + (double) m21 * (double) num6);
-            float num11 = (float) (1.0 / ((double) m00 * (double) num7 + (double) m10 * (double) num8 + (double) m20 * (double) num9 +
-                (double) m30 * (double) num10));
-            result.m00 = num7 * num11;
-            result.m01 = num8 * num11;
-            result.m02 = num9 * num11;
-            result.m03 = num10 * num11;
-            result.m10 = (float) -((double) m10 * (double) num1 - (double) m20 * (double) num2 + (double) m30 * (double) num3) * num11;
-            result.m11 = (float) ((double) m00 * (double) num1 - (double) m20 * (double) num4 + (double) m30 * (double) num5) * num11;
-            result.m12 = (float) -((double) m00 * (double) num2 - (double) m10 * (double) num4 + (double) m30 * (double) num6) * num11;
-            result.m13 = (float) ((double) m00 * (double) num3 - (double) m10 * (double) num5 + (double) m20 * (double) num6) * num11;
-            float num12 = (float) ((double) m21 * (double) m33 - (double) m31 * (double) m23);
-            float num13 = (float) ((double) m11 * (double) m33 - (double) m31 * (double) m13);
-            float num14 = (float) ((double) m11 * (double) m23 - (double) m21 * (double) m13);
-            float num15 = (float) ((double) m01 * (double) m33 - (double) m31 * (double) m03);
-            float num16 = (float) ((double) m01 * (double) m23 - (double) m21 * (double) m03);
-            float num17 = (float) ((double) m01 * (double) m13 - (double) m11 * (double) m03);
-            result.m20 = (float) ((double) m10 * (double) num12 - (double) m20 * (double) num13 + (double) m30 * (double) num14) * num11;
-            result.m21 = (float) -((double) m00 * (double) num12 - (double) m20 * (double) num15 + (double) m30 * (double) num16) * num11;
-            result.m22 = (float) ((double) m00 * (double) num13 - (double) m10 * (double) num15 + (double) m30 * (double) num17) * num11;
-            result.m23 = (float) -((double) m00 * (double) num14 - (double) m10 * (double) num16 + (double) m20 * (double) num17) * num11;
-            float num18 = (float) ((double) m21 * (double) m32 - (double) m31 * (double) m22);
-            float num19 = (float) ((double) m11 * (double) m32 - (double) m31 * (double) m12);
-            float num20 = (float) ((double) m11 * (double) m22 - (double) m21 * (double) m12);
-            float num21 = (float) ((double) m01 * (double) m32 - (double) m31 * (double) m02);
-            float num22 = (float) ((double) m01 * (double) m22 - (double) m21 * (double) m02);
-            float num23 = (float) ((double) m01 * (double) m12 - (double) m11 * (double) m02);
-            result.m30 = (float) -((double) m10 * (double) num18 - (double) m20 * (double) num19 + (double) m30 * (double) num20) * num11;
-            result.m31 = (float) ((double) m00 * (double) num18 - (double) m20 * (double) num21 + (double) m30 * (double) num22) * num11;
-            result.m32 = (float) -((double) m00 * (double) num19 - (double) m10 * (double) num21 + (double) m30 * (double) num23) * num11;
-            result.m33 = (float) ((double) m00 * (double) num20 - (double) m10 * (double) num22 + (double) m20 * (double) num23) * num11;
-        }
-
-        public static Matrix4x4 Add(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = matrix1.m00 + matrix2.m00;
-            matrix44.m01 = matrix1.m01 + matrix2.m01;
-            matrix44.m02 = matrix1.m02 + matrix2.m02;
-            matrix44.m03 = matrix1.m03 + matrix2.m03;
-            matrix44.m10 = matrix1.m10 + matrix2.m10;
-            matrix44.m11 = matrix1.m11 + matrix2.m11;
-            matrix44.m12 = matrix1.m12 + matrix2.m12;
-            matrix44.m13 = matrix1.m13 + matrix2.m13;
-            matrix44.m20 = matrix1.m20 + matrix2.m20;
-            matrix44.m21 = matrix1.m21 + matrix2.m21;
-            matrix44.m22 = matrix1.m22 + matrix2.m22;
-            matrix44.m23 = matrix1.m23 + matrix2.m23;
-            matrix44.m30 = matrix1.m30 + matrix2.m30;
-            matrix44.m31 = matrix1.m31 + matrix2.m31;
-            matrix44.m32 = matrix1.m32 + matrix2.m32;
-            matrix44.m33 = matrix1.m33 + matrix2.m33;
-            return matrix44;
-        }
-
-        public static void Add(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
-        {
-            result.m00 = matrix1.m00 + matrix2.m00;
-            result.m01 = matrix1.m01 + matrix2.m01;
-            result.m02 = matrix1.m02 + matrix2.m02;
-            result.m03 = matrix1.m03 + matrix2.m03;
-            result.m10 = matrix1.m10 + matrix2.m10;
-            result.m11 = matrix1.m11 + matrix2.m11;
-            result.m12 = matrix1.m12 + matrix2.m12;
-            result.m13 = matrix1.m13 + matrix2.m13;
-            result.m20 = matrix1.m20 + matrix2.m20;
-            result.m21 = matrix1.m21 + matrix2.m21;
-            result.m22 = matrix1.m22 + matrix2.m22;
-            result.m23 = matrix1.m23 + matrix2.m23;
-            result.m30 = matrix1.m30 + matrix2.m30;
-            result.m31 = matrix1.m31 + matrix2.m31;
-            result.m32 = matrix1.m32 + matrix2.m32;
-            result.m33 = matrix1.m33 + matrix2.m33;
-        }
-
-        public static Matrix4x4 Sub(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = matrix1.m00 - matrix2.m00;
-            matrix44.m01 = matrix1.m01 - matrix2.m01;
-            matrix44.m02 = matrix1.m02 - matrix2.m02;
-            matrix44.m03 = matrix1.m03 - matrix2.m03;
-            matrix44.m10 = matrix1.m10 - matrix2.m10;
-            matrix44.m11 = matrix1.m11 - matrix2.m11;
-            matrix44.m12 = matrix1.m12 - matrix2.m12;
-            matrix44.m13 = matrix1.m13 - matrix2.m13;
-            matrix44.m20 = matrix1.m20 - matrix2.m20;
-            matrix44.m21 = matrix1.m21 - matrix2.m21;
-            matrix44.m22 = matrix1.m22 - matrix2.m22;
-            matrix44.m23 = matrix1.m23 - matrix2.m23;
-            matrix44.m30 = matrix1.m30 - matrix2.m30;
-            matrix44.m31 = matrix1.m31 - matrix2.m31;
-            matrix44.m32 = matrix1.m32 - matrix2.m32;
-            matrix44.m33 = matrix1.m33 - matrix2.m33;
-            return matrix44;
-        }
-
-        public static void Sub(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
-        {
-            result.m00 = matrix1.m00 - matrix2.m00;
-            result.m01 = matrix1.m01 - matrix2.m01;
-            result.m02 = matrix1.m02 - matrix2.m02;
-            result.m03 = matrix1.m03 - matrix2.m03;
-            result.m10 = matrix1.m10 - matrix2.m10;
-            result.m11 = matrix1.m11 - matrix2.m11;
-            result.m12 = matrix1.m12 - matrix2.m12;
-            result.m13 = matrix1.m13 - matrix2.m13;
-            result.m20 = matrix1.m20 - matrix2.m20;
-            result.m21 = matrix1.m21 - matrix2.m21;
-            result.m22 = matrix1.m22 - matrix2.m22;
-            result.m23 = matrix1.m23 - matrix2.m23;
-            result.m30 = matrix1.m30 - matrix2.m30;
-            result.m31 = matrix1.m31 - matrix2.m31;
-            result.m32 = matrix1.m32 - matrix2.m32;
-            result.m33 = matrix1.m33 - matrix2.m33;
-        }
-
-        public static Matrix4x4 Multiply(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
-                (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
-            matrix44.m01 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
-                (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
-            matrix44.m02 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
-                (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
-            matrix44.m03 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
-                (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
-            matrix44.m10 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
-                (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
-            matrix44.m11 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
-                (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
-            matrix44.m12 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
-                (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
-            matrix44.m13 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
-                (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
-            matrix44.m20 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
-                (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
-            matrix44.m21 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
-                (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
-            matrix44.m22 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
-                (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
-            matrix44.m23 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
-                (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
-            matrix44.m30 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
-                (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
-            matrix44.m31 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
-                (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
-            matrix44.m32 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
-                (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
-            matrix44.m33 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
-                (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
-            return matrix44;
-        }
-
-        public static void Multiply(ref Matrix4x4 matrix1, ref Matrix4x4 matrix2, out Matrix4x4 result)
-        {
-            float num1 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
-                (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
-            float num2 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
-                (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
-            float num3 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
-                (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
-            float num4 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
-                (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
-            float num5 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
-                (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
-            float num6 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
-                (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
-            float num7 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
-                (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
-            float num8 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
-                (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
-            float num9 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
-                (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
-            float num10 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
-                (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
-            float num11 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
-                (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
-            float num12 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
-                (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
-            float num13 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
-                (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
-            float num14 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
-                (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
-            float num15 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
-                (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
-            float num16 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
-                (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
-            result.m00 = num1;
-            result.m01 = num2;
-            result.m02 = num3;
-            result.m03 = num4;
-            result.m10 = num5;
-            result.m11 = num6;
-            result.m12 = num7;
-            result.m13 = num8;
-            result.m20 = num9;
-            result.m21 = num10;
-            result.m22 = num11;
-            result.m23 = num12;
-            result.m30 = num13;
-            result.m31 = num14;
-            result.m32 = num15;
-            result.m33 = num16;
-        }
-
-        public static Vector4 TransformVector4(Matrix4x4 matrix, Vector4 vector)
-        {
-            float num1 = (float) ((double) vector.x * (double) matrix.m00 + (double) vector.y * (double) matrix.m01 +
-                (double) vector.z * (double) matrix.m02 + (double) vector.w * (double) matrix.m03);
-            float num2 = (float) ((double) vector.x * (double) matrix.m10 + (double) vector.y * (double) matrix.m11 +
-                (double) vector.z * (double) matrix.m12 + (double) vector.w * (double) matrix.m13);
-            float num3 = (float) ((double) vector.x * (double) matrix.m20 + (double) vector.y * (double) matrix.m21 +
-                (double) vector.z * (double) matrix.m22 + (double) vector.w * (double) matrix.m23);
-            float num4 = (float) ((double) vector.x * (double) matrix.m30 + (double) vector.y * (double) matrix.m31 +
-                (double) vector.z * (double) matrix.m32 + (double) vector.w * (double) matrix.m33);
-            Vector4 vector4;
-            vector4.x = num1;
-            vector4.y = num2;
-            vector4.z = num3;
-            vector4.w = num4;
-            return vector4;
-        }
-
-        public static void TransformVector4(ref Matrix4x4 matrix, ref Vector4 vector, out Vector4 result)
-        {
-            float num1 = (float) ((double) vector.x * (double) matrix.m00 + (double) vector.y * (double) matrix.m01 +
-                (double) vector.z * (double) matrix.m02 + (double) vector.w * (double) matrix.m03);
-            float num2 = (float) ((double) vector.x * (double) matrix.m10 + (double) vector.y * (double) matrix.m11 +
-                (double) vector.z * (double) matrix.m12 + (double) vector.w * (double) matrix.m13);
-            float num3 = (float) ((double) vector.x * (double) matrix.m20 + (double) vector.y * (double) matrix.m21 +
-                (double) vector.z * (double) matrix.m22 + (double) vector.w * (double) matrix.m23);
-            float num4 = (float) ((double) vector.x * (double) matrix.m30 + (double) vector.y * (double) matrix.m31 +
-                (double) vector.z * (double) matrix.m32 + (double) vector.w * (double) matrix.m33);
-            result.x = num1;
-            result.y = num2;
-            result.z = num3;
-            result.w = num4;
-        }
-
-        public static Vector3 TransformPosition(Matrix4x4 matrix, Vector3 position)
-        {
-            float num1 = (float) ((double) position.x * (double) matrix.m00 + (double) position.y * (double) matrix.m01 +
-                (double) position.z * (double) matrix.m02) + matrix.m03;
-            float num2 = (float) ((double) position.x * (double) matrix.m10 + (double) position.y * (double) matrix.m11 +
-                (double) position.z * (double) matrix.m12) + matrix.m13;
-            float num3 = (float) ((double) position.x * (double) matrix.m20 + (double) position.y * (double) matrix.m21 +
-                (double) position.z * (double) matrix.m22) + matrix.m23;
-            Vector3 vector3;
-            vector3.x = num1;
-            vector3.y = num2;
-            vector3.z = num3;
-            return vector3;
-        }
-
-        public static void TransformPosition(ref Matrix4x4 matrix, ref Vector3 position, out Vector3 result)
-        {
-            float num1 = (float) ((double) position.x * (double) matrix.m00 + (double) position.y * (double) matrix.m01 +
-                (double) position.z * (double) matrix.m02) + matrix.m03;
-            float num2 = (float) ((double) position.x * (double) matrix.m10 + (double) position.y * (double) matrix.m11 +
-                (double) position.z * (double) matrix.m12) + matrix.m13;
-            float num3 = (float) ((double) position.x * (double) matrix.m20 + (double) position.y * (double) matrix.m21 +
-                (double) position.z * (double) matrix.m22) + matrix.m23;
-            result.x = num1;
-            result.y = num2;
-            result.z = num3;
-        }
-        
-        public Vector3 MultiplyPoint3x4(Vector3 point)
-        {
-            return TransformPosition(this, point);
-        }
-
-        public Vector3 MultiplyVector(Vector3 vector)
-        {
-            return TransformDirection(this, vector);
-        }
-
-        public static Vector3 TransformDirection(Matrix4x4 matrix, Vector3 direction)
-        {
-            float num1 = (float) ((double) direction.x * (double) matrix.m00 + (double) direction.y * (double) matrix.m01 +
-                (double) direction.z * (double) matrix.m02);
-            float num2 = (float) ((double) direction.x * (double) matrix.m10 + (double) direction.y * (double) matrix.m11 +
-                (double) direction.z * (double) matrix.m12);
-            float num3 = (float) ((double) direction.x * (double) matrix.m20 + (double) direction.y * (double) matrix.m21 +
-                (double) direction.z * (double) matrix.m22);
-            Vector3 vector3;
-            vector3.x = num1;
-            vector3.y = num2;
-            vector3.z = num3;
-            return vector3;
-        }
-
-        public static void TransformDirection(ref Matrix4x4 matrix, ref Vector3 direction, out Vector3 result)
-        {
-            float num1 = (float) ((double) direction.x * (double) matrix.m00 + (double) direction.y * (double) matrix.m01 +
-                (double) direction.z * (double) matrix.m02);
-            float num2 = (float) ((double) direction.x * (double) matrix.m10 + (double) direction.y * (double) matrix.m11 +
-                (double) direction.z * (double) matrix.m12);
-            float num3 = (float) ((double) direction.x * (double) matrix.m20 + (double) direction.y * (double) matrix.m21 +
-                (double) direction.z * (double) matrix.m22);
-            result.x = num1;
-            result.y = num2;
-            result.z = num3;
-        }
-
-        public static Matrix4x4 operator -(Matrix4x4 matrix1)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = -matrix1.m00;
-            matrix44.m01 = -matrix1.m01;
-            matrix44.m02 = -matrix1.m02;
-            matrix44.m03 = -matrix1.m03;
-            matrix44.m10 = -matrix1.m10;
-            matrix44.m11 = -matrix1.m11;
-            matrix44.m12 = -matrix1.m12;
-            matrix44.m13 = -matrix1.m13;
-            matrix44.m20 = -matrix1.m20;
-            matrix44.m21 = -matrix1.m21;
-            matrix44.m22 = -matrix1.m22;
-            matrix44.m23 = -matrix1.m23;
-            matrix44.m30 = -matrix1.m30;
-            matrix44.m31 = -matrix1.m31;
-            matrix44.m32 = -matrix1.m32;
-            matrix44.m33 = -matrix1.m33;
-            return matrix44;
-        }
-
-        public static bool operator ==(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            if ((double) matrix1.m00 == (double) matrix2.m00 && (double) matrix1.m11 == (double) matrix2.m11 &&
-                ((double) matrix1.m22 == (double) matrix2.m22 && (double) matrix1.m33 == (double) matrix2.m33) &&
-                ((double) matrix1.m01 == (double) matrix2.m01 && (double) matrix1.m02 == (double) matrix2.m02 &&
-                    ((double) matrix1.m03 == (double) matrix2.m03 && (double) matrix1.m10 == (double) matrix2.m10)) &&
-                ((double) matrix1.m12 == (double) matrix2.m12 && (double) matrix1.m13 == (double) matrix2.m13 &&
-                    ((double) matrix1.m20 == (double) matrix2.m20 && (double) matrix1.m21 == (double) matrix2.m21) &&
-                    ((double) matrix1.m23 == (double) matrix2.m23 && (double) matrix1.m30 == (double) matrix2.m30 &&
-                        (double) matrix1.m31 == (double) matrix2.m31)))
-                return (double) matrix1.m32 == (double) matrix2.m32;
-            return false;
-        }
-
-        public static bool operator !=(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            if ((double) matrix1.m00 == (double) matrix2.m00 && (double) matrix1.m01 == (double) matrix2.m01 &&
-                ((double) matrix1.m02 == (double) matrix2.m02 && (double) matrix1.m03 == (double) matrix2.m03) &&
-                ((double) matrix1.m10 == (double) matrix2.m10 && (double) matrix1.m11 == (double) matrix2.m11 &&
-                    ((double) matrix1.m12 == (double) matrix2.m12 && (double) matrix1.m13 == (double) matrix2.m13)) &&
-                ((double) matrix1.m20 == (double) matrix2.m20 && (double) matrix1.m21 == (double) matrix2.m21 &&
-                    ((double) matrix1.m22 == (double) matrix2.m22 && (double) matrix1.m23 == (double) matrix2.m23) &&
-                    ((double) matrix1.m30 == (double) matrix2.m30 && (double) matrix1.m31 == (double) matrix2.m31 &&
-                        (double) matrix1.m32 == (double) matrix2.m32)))
-                return (double) matrix1.m33 != (double) matrix2.m33;
-            return true;
-        }
-
-        public static Matrix4x4 operator +(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = matrix1.m00 + matrix2.m00;
-            matrix44.m01 = matrix1.m01 + matrix2.m01;
-            matrix44.m02 = matrix1.m02 + matrix2.m02;
-            matrix44.m03 = matrix1.m03 + matrix2.m03;
-            matrix44.m10 = matrix1.m10 + matrix2.m10;
-            matrix44.m11 = matrix1.m11 + matrix2.m11;
-            matrix44.m12 = matrix1.m12 + matrix2.m12;
-            matrix44.m13 = matrix1.m13 + matrix2.m13;
-            matrix44.m20 = matrix1.m20 + matrix2.m20;
-            matrix44.m21 = matrix1.m21 + matrix2.m21;
-            matrix44.m22 = matrix1.m22 + matrix2.m22;
-            matrix44.m23 = matrix1.m23 + matrix2.m23;
-            matrix44.m30 = matrix1.m30 + matrix2.m30;
-            matrix44.m31 = matrix1.m31 + matrix2.m31;
-            matrix44.m32 = matrix1.m32 + matrix2.m32;
-            matrix44.m33 = matrix1.m33 + matrix2.m33;
-            return matrix44;
-        }
-
-        public static Matrix4x4 operator -(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = matrix1.m00 - matrix2.m00;
-            matrix44.m01 = matrix1.m01 - matrix2.m01;
-            matrix44.m02 = matrix1.m02 - matrix2.m02;
-            matrix44.m03 = matrix1.m03 - matrix2.m03;
-            matrix44.m10 = matrix1.m10 - matrix2.m10;
-            matrix44.m11 = matrix1.m11 - matrix2.m11;
-            matrix44.m12 = matrix1.m12 - matrix2.m12;
-            matrix44.m13 = matrix1.m13 - matrix2.m13;
-            matrix44.m20 = matrix1.m20 - matrix2.m20;
-            matrix44.m21 = matrix1.m21 - matrix2.m21;
-            matrix44.m22 = matrix1.m22 - matrix2.m22;
-            matrix44.m23 = matrix1.m23 - matrix2.m23;
-            matrix44.m30 = matrix1.m30 - matrix2.m30;
-            matrix44.m31 = matrix1.m31 - matrix2.m31;
-            matrix44.m32 = matrix1.m32 - matrix2.m32;
-            matrix44.m33 = matrix1.m33 - matrix2.m33;
-            return matrix44;
-        }
-
-        public static Matrix4x4 operator *(Matrix4x4 matrix1, Matrix4x4 matrix2)
-        {
-            Matrix4x4 matrix44;
-            matrix44.m00 = (float) ((double) matrix1.m00 * (double) matrix2.m00 + (double) matrix1.m01 * (double) matrix2.m10 +
-                (double) matrix1.m02 * (double) matrix2.m20 + (double) matrix1.m03 * (double) matrix2.m30);
-            matrix44.m01 = (float) ((double) matrix1.m00 * (double) matrix2.m01 + (double) matrix1.m01 * (double) matrix2.m11 +
-                (double) matrix1.m02 * (double) matrix2.m21 + (double) matrix1.m03 * (double) matrix2.m31);
-            matrix44.m02 = (float) ((double) matrix1.m00 * (double) matrix2.m02 + (double) matrix1.m01 * (double) matrix2.m12 +
-                (double) matrix1.m02 * (double) matrix2.m22 + (double) matrix1.m03 * (double) matrix2.m32);
-            matrix44.m03 = (float) ((double) matrix1.m00 * (double) matrix2.m03 + (double) matrix1.m01 * (double) matrix2.m13 +
-                (double) matrix1.m02 * (double) matrix2.m23 + (double) matrix1.m03 * (double) matrix2.m33);
-            matrix44.m10 = (float) ((double) matrix1.m10 * (double) matrix2.m00 + (double) matrix1.m11 * (double) matrix2.m10 +
-                (double) matrix1.m12 * (double) matrix2.m20 + (double) matrix1.m13 * (double) matrix2.m30);
-            matrix44.m11 = (float) ((double) matrix1.m10 * (double) matrix2.m01 + (double) matrix1.m11 * (double) matrix2.m11 +
-                (double) matrix1.m12 * (double) matrix2.m21 + (double) matrix1.m13 * (double) matrix2.m31);
-            matrix44.m12 = (float) ((double) matrix1.m10 * (double) matrix2.m02 + (double) matrix1.m11 * (double) matrix2.m12 +
-                (double) matrix1.m12 * (double) matrix2.m22 + (double) matrix1.m13 * (double) matrix2.m32);
-            matrix44.m13 = (float) ((double) matrix1.m10 * (double) matrix2.m03 + (double) matrix1.m11 * (double) matrix2.m13 +
-                (double) matrix1.m12 * (double) matrix2.m23 + (double) matrix1.m13 * (double) matrix2.m33);
-            matrix44.m20 = (float) ((double) matrix1.m20 * (double) matrix2.m00 + (double) matrix1.m21 * (double) matrix2.m10 +
-                (double) matrix1.m22 * (double) matrix2.m20 + (double) matrix1.m23 * (double) matrix2.m30);
-            matrix44.m21 = (float) ((double) matrix1.m20 * (double) matrix2.m01 + (double) matrix1.m21 * (double) matrix2.m11 +
-                (double) matrix1.m22 * (double) matrix2.m21 + (double) matrix1.m23 * (double) matrix2.m31);
-            matrix44.m22 = (float) ((double) matrix1.m20 * (double) matrix2.m02 + (double) matrix1.m21 * (double) matrix2.m12 +
-                (double) matrix1.m22 * (double) matrix2.m22 + (double) matrix1.m23 * (double) matrix2.m32);
-            matrix44.m23 = (float) ((double) matrix1.m20 * (double) matrix2.m03 + (double) matrix1.m21 * (double) matrix2.m13 +
-                (double) matrix1.m22 * (double) matrix2.m23 + (double) matrix1.m23 * (double) matrix2.m33);
-            matrix44.m30 = (float) ((double) matrix1.m30 * (double) matrix2.m00 + (double) matrix1.m31 * (double) matrix2.m10 +
-                (double) matrix1.m32 * (double) matrix2.m20 + (double) matrix1.m33 * (double) matrix2.m30);
-            matrix44.m31 = (float) ((double) matrix1.m30 * (double) matrix2.m01 + (double) matrix1.m31 * (double) matrix2.m11 +
-                (double) matrix1.m32 * (double) matrix2.m21 + (double) matrix1.m33 * (double) matrix2.m31);
-            matrix44.m32 = (float) ((double) matrix1.m30 * (double) matrix2.m02 + (double) matrix1.m31 * (double) matrix2.m12 +
-                (double) matrix1.m32 * (double) matrix2.m22 + (double) matrix1.m33 * (double) matrix2.m32);
-            matrix44.m33 = (float) ((double) matrix1.m30 * (double) matrix2.m03 + (double) matrix1.m31 * (double) matrix2.m13 +
-                (double) matrix1.m32 * (double) matrix2.m23 + (double) matrix1.m33 * (double) matrix2.m33);
-            return matrix44;
-        }
-    }
-}

+ 0 - 920
DotNet/ThirdParty/UnityEngine/Quaternion.cs

@@ -1,920 +0,0 @@
-using System;
-using System.Globalization;
-
-namespace UnityEngine
-{
-    [Serializable]
-    public struct Quaternion: IEquatable<Quaternion>
-    {
-        public static readonly Quaternion identity = new Quaternion(0.0f, 0.0f, 0.0f, 1f);
-        public float w;
-        public float x;
-        public float y;
-        public float z;
-
-
-        public Quaternion(float x, float y, float z, float w)
-        {
-            this.x = x;
-            this.y = y;
-            this.z = z;
-            this.w = w;
-        }
-
-        public Quaternion(float angle, Vector3 rkAxis)
-        {
-            float num1 = angle * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            this.x = rkAxis.x * num2;
-            this.y = rkAxis.y * num2;
-            this.z = rkAxis.z * num2;
-            this.w = num3;
-        }
-
-        public Quaternion(Vector3 xaxis, Vector3 yaxis, Vector3 zaxis)
-        {
-            Matrix4x4 identityM = Matrix4x4.identity;
-            identityM[0, 0] = xaxis.x;
-            identityM[1, 0] = xaxis.y;
-            identityM[2, 0] = xaxis.z;
-            identityM[0, 1] = yaxis.x;
-            identityM[1, 1] = yaxis.y;
-            identityM[2, 1] = yaxis.z;
-            identityM[0, 2] = zaxis.x;
-            identityM[1, 2] = zaxis.y;
-            identityM[2, 2] = zaxis.z;
-            Quaternion.CreateFromRotationMatrix(ref identityM, out this);
-        }
-
-        public Quaternion(float yaw, float pitch, float roll)
-        {
-            float num1 = roll * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            float num4 = pitch * 0.5f;
-            float num5 = (float) Math.Sin((double) num4);
-            float num6 = (float) Math.Cos((double) num4);
-            float num7 = yaw * 0.5f;
-            float num8 = (float) Math.Sin((double) num7);
-            float num9 = (float) Math.Cos((double) num7);
-            this.x = (float) ((double) num9 * (double) num5 * (double) num3 + (double) num8 * (double) num6 * (double) num2);
-            this.y = (float) ((double) num8 * (double) num6 * (double) num3 - (double) num9 * (double) num5 * (double) num2);
-            this.z = (float) ((double) num9 * (double) num6 * (double) num2 - (double) num8 * (double) num5 * (double) num3);
-            this.w = (float) ((double) num9 * (double) num6 * (double) num3 + (double) num8 * (double) num5 * (double) num2);
-        }
-        
-
-        public override string ToString()
-        {
-            CultureInfo currentCulture = CultureInfo.CurrentCulture;
-            return string.Format((IFormatProvider) currentCulture, "({0}, {1}, {2}, {3})", (object) this.x.ToString((IFormatProvider) currentCulture),
-                                 (object) this.y.ToString((IFormatProvider) currentCulture),
-                                 (object) this.z.ToString((IFormatProvider) currentCulture),
-                                 (object) this.w.ToString((IFormatProvider) currentCulture));
-        }
-
-        public bool Equals(Quaternion other)
-        {
-            if ((double) this.x == (double) other.x && (double) this.y == (double) other.y && (double) this.z == (double) other.z)
-                return (double) this.w == (double) other.w;
-            return false;
-        }
-
-        public override bool Equals(object obj)
-        {
-            bool flag = false;
-            if (obj is Quaternion)
-                flag = this.Equals((Quaternion) obj);
-            return flag;
-        }
-
-        public override int GetHashCode()
-        {
-            return this.x.GetHashCode() + this.y.GetHashCode() + this.z.GetHashCode() + this.w.GetHashCode();
-        }
-
-        public float LengthSquared()
-        {
-            return (float) ((double) this.x * (double) this.x + (double) this.y * (double) this.y + (double) this.z * (double) this.z +
-                (double) this.w * (double) this.w);
-        }
-
-        public float Length()
-        {
-            return (float) Math.Sqrt((double) this.x * (double) this.x + (double) this.y * (double) this.y + (double) this.z * (double) this.z +
-                                     (double) this.w * (double) this.w);
-        }
-
-        public void Normalize()
-        {
-            float num = 1f / (float) Math.Sqrt((double) this.x * (double) this.x + (double) this.y * (double) this.y +
-                                               (double) this.z * (double) this.z + (double) this.w * (double) this.w);
-            this.x *= num;
-            this.y *= num;
-            this.z *= num;
-            this.w *= num;
-        }
-
-        public static Quaternion Normalize(Quaternion quaternion)
-        {
-            float num = 1f / (float) Math.Sqrt((double) quaternion.x * (double) quaternion.x + (double) quaternion.y * (double) quaternion.y +
-                                               (double) quaternion.z * (double) quaternion.z + (double) quaternion.w * (double) quaternion.w);
-            Quaternion quaternion1;
-            quaternion1.x = quaternion.x * num;
-            quaternion1.y = quaternion.y * num;
-            quaternion1.z = quaternion.z * num;
-            quaternion1.w = quaternion.w * num;
-            return quaternion1;
-        }
-
-        public static void Normalize(ref Quaternion quaternion, out Quaternion result)
-        {
-            float num = 1f / (float) Math.Sqrt((double) quaternion.x * (double) quaternion.x + (double) quaternion.y * (double) quaternion.y +
-                                               (double) quaternion.z * (double) quaternion.z + (double) quaternion.w * (double) quaternion.w);
-            result.x = quaternion.x * num;
-            result.y = quaternion.y * num;
-            result.z = quaternion.z * num;
-            result.w = quaternion.w * num;
-        }
-
-        public static Quaternion Inverse(Quaternion quaternion)
-        {
-            float num = 1f / (float) ((double) quaternion.x * (double) quaternion.x + (double) quaternion.y * (double) quaternion.y +
-                (double) quaternion.z * (double) quaternion.z + (double) quaternion.w * (double) quaternion.w);
-            Quaternion quaternion1;
-            quaternion1.x = -quaternion.x * num;
-            quaternion1.y = -quaternion.y * num;
-            quaternion1.z = -quaternion.z * num;
-            quaternion1.w = quaternion.w * num;
-            return quaternion1;
-        }
-
-        public static void Inverse(ref Quaternion quaternion, out Quaternion result)
-        {
-            float num = 1f / (float) ((double) quaternion.x * (double) quaternion.x + (double) quaternion.y * (double) quaternion.y +
-                (double) quaternion.z * (double) quaternion.z + (double) quaternion.w * (double) quaternion.w);
-            result.x = -quaternion.x * num;
-            result.y = -quaternion.y * num;
-            result.z = -quaternion.z * num;
-            result.w = quaternion.w * num;
-        }
-
-        public static Quaternion CreateFromAxisAngle(Vector3 axis, float angle)
-        {
-            float num1 = angle * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            Quaternion quaternion;
-            quaternion.x = axis.x * num2;
-            quaternion.y = axis.y * num2;
-            quaternion.z = axis.z * num2;
-            quaternion.w = num3;
-            return quaternion;
-        }
-
-        public static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Quaternion result)
-        {
-            float num1 = angle * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            result.x = axis.x * num2;
-            result.y = axis.y * num2;
-            result.z = axis.z * num2;
-            result.w = num3;
-        }
-
-        public static Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll)
-        {
-            float num1 = roll * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            float num4 = pitch * 0.5f;
-            float num5 = (float) Math.Sin((double) num4);
-            float num6 = (float) Math.Cos((double) num4);
-            float num7 = yaw * 0.5f;
-            float num8 = (float) Math.Sin((double) num7);
-            float num9 = (float) Math.Cos((double) num7);
-            Quaternion quaternion;
-            quaternion.x = (float) ((double) num9 * (double) num5 * (double) num3 + (double) num8 * (double) num6 * (double) num2);
-            quaternion.y = (float) ((double) num8 * (double) num6 * (double) num3 - (double) num9 * (double) num5 * (double) num2);
-            quaternion.z = (float) ((double) num9 * (double) num6 * (double) num2 - (double) num8 * (double) num5 * (double) num3);
-            quaternion.w = (float) ((double) num9 * (double) num6 * (double) num3 + (double) num8 * (double) num5 * (double) num2);
-            return quaternion;
-        }
-        
-        public static Quaternion Euler(Vector3 eulerAngle)
-        {
-            //角度转弧度
-            eulerAngle = Mathf.Deg2Rad(eulerAngle);
-
-            float cX = (float)Math.Cos(eulerAngle.x / 2.0f);
-            float sX = (float)Math.Sin(eulerAngle.x / 2.0f);
-
-            float cY = (float)Math.Cos(eulerAngle.y / 2.0f);
-            float sY = (float)Math.Sin(eulerAngle.y / 2.0f);
-
-            float cZ = (float)Math.Cos(eulerAngle.z / 2.0f);
-            float sZ = (float)Math.Sin(eulerAngle.z / 2.0f);
-
-            Quaternion qX = new Quaternion(sX, 0, 0, cX);
-            Quaternion qY = new Quaternion(0, sY, 0, cY);
-            Quaternion qZ = new Quaternion(0, 0, sZ, cZ);
-
-            Quaternion q = (qY * qX) * qZ;
-
-            return q;
-        }
-
-        public static Quaternion Euler(float x, float y, float z)
-        {
-            return Euler(new Vector3(x, y, z));
-        }
-        
-        private static Matrix3x3 QuaternionToMatrix(Quaternion q)
-        {
-            // Precalculate coordinate products
-            float x = q.x * 2.0F;
-            float y = q.y * 2.0F;
-            float z = q.z * 2.0F;
-            float xx = q.x * x;
-            float yy = q.y * y;
-            float zz = q.z * z;
-            float xy = q.x * y;
-            float xz = q.x * z;
-            float yz = q.y * z;
-            float wx = q.w * x;
-            float wy = q.w * y;
-            float wz = q.w * z;
-
-            // Calculate 3x3 matrix from orthonormal basis
-            Matrix3x3 m = Matrix3x3.identity;
-
-            m.Data[0] = 1.0f - (yy + zz);
-            m.Data[1] = xy + wz;
-            m.Data[2] = xz - wy;
-
-            m.Data[3] = xy - wz;
-            m.Data[4] = 1.0f - (xx + zz);
-            m.Data[5] = yz + wx;
-
-            m.Data[6] = xz + wy;
-            m.Data[7] = yz - wx;
-            m.Data[8] = 1.0f - (xx + yy);
-
-            return m;
-        }
-        
-        public static Vector3 QuaternionToEuler(Quaternion quat)
-        {
-            Matrix3x3 m = QuaternionToMatrix(quat);
-            Vector3 euler = MatrixToEuler(m);
-
-            //弧度转角度
-            return Mathf.Rad2Deg(euler);
-        }
-        
-        private static Vector3 MakePositive(Vector3 euler)
-        {
-            const float negativeFlip = -0.0001F;
-            const float positiveFlip = ((float)Math.PI * 2.0F) - 0.0001F;
-
-            if (euler.x < negativeFlip)
-                euler.x += 2.0f * (float)Math.PI;
-            else if (euler.x > positiveFlip)
-                euler.x -= 2.0f * (float)Math.PI;
-
-            if (euler.y < negativeFlip)
-                euler.y += 2.0f * (float)Math.PI;
-            else if (euler.y > positiveFlip)
-                euler.y -= 2.0f * (float)Math.PI;
-
-            if (euler.z < negativeFlip)
-                euler.z += 2.0f * (float)Math.PI;
-            else if (euler.z > positiveFlip)
-                euler.z -= 2.0f * (float)Math.PI;
-
-            return euler;
-        }
-        
-        
-        private static Vector3 MatrixToEuler(Matrix3x3 matrix)
-        {
-            // from http://www.geometrictools.com/Documentation/EulerAngles.pdf
-            // YXZ order
-            Vector3 v = Vector3.zero;
-            if (matrix.Data[7] < 0.999F) // some fudge for imprecision
-            {
-                if (matrix.Data[7] > -0.999F) // some fudge for imprecision
-                {
-                    v.x = Mathf.Asin(-matrix.Data[7]);
-                    v.y = Mathf.Atan2(matrix.Data[6], matrix.Data[8]);
-                    v.z = Mathf.Atan2(matrix.Data[1], matrix.Data[4]);
-                    MakePositive(v);
-                }
-                else
-                {
-                    // WARNING.  Not unique.  YA - ZA = atan2(r01,r00)
-                    v.x = (float)Math.PI * 0.5F;
-                    v.y = Mathf.Atan2(matrix.Data[3], matrix.Data[0]);
-                    v.z = 0.0F;
-                    MakePositive(v);
-                }
-            }
-            else
-            {
-                // WARNING.  Not unique.  YA + ZA = atan2(-r01,r00)
-                v.x = -(float)Math.PI * 0.5F;
-                v.y = Mathf.Atan2(-matrix.Data[3], matrix.Data[0]);
-                v.z = 0.0F;
-                MakePositive(v);
-            }
-
-            return v; //返回的是弧度值
-        }
-        
-        private static Quaternion MatrixToQuaternion(Matrix3x3 kRot)
-        {
-            Quaternion q = new Quaternion();
-
-            // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes
-            // article "Quaternionf Calculus and Fast Animation".
-
-            float fTrace = kRot.Get(0, 0) + kRot.Get(1, 1) + kRot.Get(2, 2);
-            float fRoot;
-
-            if (fTrace > 0.0f)
-            {
-                // |w| > 1/2, mafy as well choose w > 1/2
-                fRoot = Mathf.Sqrt(fTrace + 1.0f);  // 2w
-                q.w = 0.5f * fRoot;
-                fRoot = 0.5f / fRoot;  // 1/(4w)
-                q.x = (kRot.Get(2, 1) - kRot.Get(1, 2)) * fRoot;
-                q.y = (kRot.Get(0, 2) - kRot.Get(2, 0)) * fRoot;
-                q.z = (kRot.Get(1, 0) - kRot.Get(0, 1)) * fRoot;
-            }
-            else
-            {
-                // |w| <= 1/2
-                int[] s_iNext = new int[3] { 1, 2, 0 };
-                int i = 0;
-                if (kRot.Get(1, 1) > kRot.Get(0, 0))
-                    i = 1;
-                if (kRot.Get(2, 2) > kRot.Get(i, i))
-                    i = 2;
-                int j = s_iNext[i];
-                int k = s_iNext[j];
-
-                fRoot = Mathf.Sqrt(kRot.Get(i, i) - kRot.Get(j, j) - kRot.Get(k, k) + 1.0f);
-                float[] apkQuat = new float[3] { q.x, q.y, q.z };
-
-                apkQuat[i] = 0.5f * fRoot;
-                fRoot = 0.5f / fRoot;
-                q.w = (kRot.Get(k, j) - kRot.Get(j, k)) * fRoot;
-                apkQuat[j] = (kRot.Get(j, i) + kRot.Get(i, j)) * fRoot;
-                apkQuat[k] = (kRot.Get(k, i) + kRot.Get(i, k)) * fRoot;
-
-                q.x = apkQuat[0];
-                q.y = apkQuat[1];
-                q.z = apkQuat[2];
-            }
-            q = Quaternion.Normalize(q);
-
-            return q;
-        }
-        
-        public static Quaternion FromToRotation(Vector3 a, Vector3 b)
-        {
-            //return UnityEngine.Quaternion.FromToRotation(a, b);
-            Vector3 start = a.normalized;
-            Vector3 dest = b.normalized;
-            float cosTheta = Vector3.Dot(start, dest);
-            Vector3 rotationAxis;
-            Quaternion quaternion;
-            if (cosTheta < -1 + 0.001f)
-            {
-                rotationAxis = Vector3.Cross(new Vector3(0.0f, 0.0f, 1.0f), start);
-                if (rotationAxis.sqrMagnitude < 0.01f)
-                {
-                    rotationAxis = Vector3.Cross(new Vector3(1.0f, 0.0f, 0.0f), start);
-                }
-                rotationAxis.Normalize();
-                quaternion = new Quaternion((float) Math.PI, rotationAxis);
-                quaternion.Normalize();
-                return quaternion;
-            }
-
-            rotationAxis = Vector3.Cross(start, dest);
-            float s = (float)Math.Sqrt((1 + cosTheta) * 2);
-            float invs = 1 / s;
-            
-            quaternion = new Quaternion(rotationAxis.x * invs, rotationAxis.y * invs, rotationAxis.z * invs, s * 0.5f);
-            quaternion.Normalize();
-            return quaternion;
-        }
-        
-        public static bool LookRotationToQuaternion(Vector3 viewVec, Vector3 upVec, out Quaternion quat)
-        {
-            quat = Quaternion.identity;
-
-            // Generates a Right handed Quat from a look rotation. Returns if conversion was successful.
-            Matrix3x3 m;
-            if (!Matrix3x3.LookRotationToMatrix(viewVec, upVec, out m))
-                return false;
-            quat = MatrixToQuaternion(m);
-            return true;
-        }
-
-        public static Quaternion LookRotation(Vector3 viewVec, Vector3 upVec)
-        {
-            Quaternion q;
-            bool ret = LookRotationToQuaternion(viewVec, upVec, out q);
-            if (!ret)
-            {
-                throw new Exception("Look fail!");
-            }
-
-            return q;
-        }
-
-        public static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Quaternion result)
-        {
-            float num1 = roll * 0.5f;
-            float num2 = (float) Math.Sin((double) num1);
-            float num3 = (float) Math.Cos((double) num1);
-            float num4 = pitch * 0.5f;
-            float num5 = (float) Math.Sin((double) num4);
-            float num6 = (float) Math.Cos((double) num4);
-            float num7 = yaw * 0.5f;
-            float num8 = (float) Math.Sin((double) num7);
-            float num9 = (float) Math.Cos((double) num7);
-            result.x = (float) ((double) num9 * (double) num5 * (double) num3 + (double) num8 * (double) num6 * (double) num2);
-            result.y = (float) ((double) num8 * (double) num6 * (double) num3 - (double) num9 * (double) num5 * (double) num2);
-            result.z = (float) ((double) num9 * (double) num6 * (double) num2 - (double) num8 * (double) num5 * (double) num3);
-            result.w = (float) ((double) num9 * (double) num6 * (double) num3 + (double) num8 * (double) num5 * (double) num2);
-        }
-
-        public static Quaternion CreateFromRotationMatrix(Matrix4x4 matrix)
-        {
-            float num1 = matrix.m00 + matrix.m11 + matrix.m22;
-            Quaternion quaternion = new Quaternion();
-            if ((double) num1 > 0.0)
-            {
-                float num2 = (float) Math.Sqrt((double) num1 + 1.0);
-                quaternion.w = num2 * 0.5f;
-                float num3 = 0.5f / num2;
-                quaternion.x = (matrix.m21 - matrix.m12) * num3;
-                quaternion.y = (matrix.m02 - matrix.m20) * num3;
-                quaternion.z = (matrix.m10 - matrix.m01) * num3;
-                return quaternion;
-            }
-
-            if ((double) matrix.m00 >= (double) matrix.m11 && (double) matrix.m00 >= (double) matrix.m22)
-            {
-                float num2 = (float) Math.Sqrt(1.0 + (double) matrix.m00 - (double) matrix.m11 - (double) matrix.m22);
-                float num3 = 0.5f / num2;
-                quaternion.x = 0.5f * num2;
-                quaternion.y = (matrix.m10 + matrix.m01) * num3;
-                quaternion.z = (matrix.m20 + matrix.m02) * num3;
-                quaternion.w = (matrix.m21 - matrix.m12) * num3;
-                return quaternion;
-            }
-
-            if ((double) matrix.m11 > (double) matrix.m22)
-            {
-                float num2 = (float) Math.Sqrt(1.0 + (double) matrix.m11 - (double) matrix.m00 - (double) matrix.m22);
-                float num3 = 0.5f / num2;
-                quaternion.x = (matrix.m01 + matrix.m10) * num3;
-                quaternion.y = 0.5f * num2;
-                quaternion.z = (matrix.m12 + matrix.m21) * num3;
-                quaternion.w = (matrix.m02 - matrix.m20) * num3;
-                return quaternion;
-            }
-
-            float num4 = (float) Math.Sqrt(1.0 + (double) matrix.m22 - (double) matrix.m00 - (double) matrix.m11);
-            float num5 = 0.5f / num4;
-            quaternion.x = (matrix.m02 + matrix.m20) * num5;
-            quaternion.y = (matrix.m12 + matrix.m21) * num5;
-            quaternion.z = 0.5f * num4;
-            quaternion.w = (matrix.m10 - matrix.m01) * num5;
-            return quaternion;
-        }
-
-        public static void CreateFromRotationMatrix(ref Matrix4x4 matrix, out Quaternion result)
-        {
-            float num1 = matrix.m00 + matrix.m11 + matrix.m22;
-            if ((double) num1 > 0.0)
-            {
-                float num2 = (float) Math.Sqrt((double) num1 + 1.0);
-                result.w = num2 * 0.5f;
-                float num3 = 0.5f / num2;
-                result.x = (matrix.m21 - matrix.m12) * num3;
-                result.y = (matrix.m02 - matrix.m20) * num3;
-                result.z = (matrix.m10 - matrix.m01) * num3;
-            }
-            else if ((double) matrix.m00 >= (double) matrix.m11 && (double) matrix.m00 >= (double) matrix.m22)
-            {
-                float num2 = (float) Math.Sqrt(1.0 + (double) matrix.m00 - (double) matrix.m11 - (double) matrix.m22);
-                float num3 = 0.5f / num2;
-                result.x = 0.5f * num2;
-                result.y = (matrix.m10 + matrix.m01) * num3;
-                result.z = (matrix.m20 + matrix.m02) * num3;
-                result.w = (matrix.m21 - matrix.m12) * num3;
-            }
-            else if ((double) matrix.m11 > (double) matrix.m22)
-            {
-                float num2 = (float) Math.Sqrt(1.0 + (double) matrix.m11 - (double) matrix.m00 - (double) matrix.m22);
-                float num3 = 0.5f / num2;
-                result.x = (matrix.m01 + matrix.m10) * num3;
-                result.y = 0.5f * num2;
-                result.z = (matrix.m12 + matrix.m21) * num3;
-                result.w = (matrix.m02 - matrix.m20) * num3;
-            }
-            else
-            {
-                float num2 = (float) Math.Sqrt(1.0 + (double) matrix.m22 - (double) matrix.m00 - (double) matrix.m11);
-                float num3 = 0.5f / num2;
-                result.x = (matrix.m02 + matrix.m20) * num3;
-                result.y = (matrix.m12 + matrix.m21) * num3;
-                result.z = 0.5f * num2;
-                result.w = (matrix.m10 - matrix.m01) * num3;
-            }
-        }
-
-        public static float Dot(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            return (float) ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w);
-        }
-
-        public static void Dot(ref Quaternion quaternion1, ref Quaternion quaternion2, out float result)
-        {
-            result = (float) ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w);
-        }
-
-        public static Quaternion Slerp(Quaternion quaternion1, Quaternion quaternion2, float amount)
-        {
-            float num1 = amount;
-            float num2 = (float) ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w);
-            bool flag = false;
-            if ((double) num2 < 0.0)
-            {
-                flag = true;
-                num2 = -num2;
-            }
-
-            float num3;
-            float num4;
-            if ((double) num2 > 0.999998986721039)
-            {
-                num3 = 1f - num1;
-                num4 = flag? -num1 : num1;
-            }
-            else
-            {
-                float num5 = (float) Math.Acos((double) num2);
-                float num6 = (float) (1.0 / Math.Sin((double) num5));
-                num3 = (float) Math.Sin((1.0 - (double) num1) * (double) num5) * num6;
-                num4 = flag? (float) -Math.Sin((double) num1 * (double) num5) * num6 : (float) Math.Sin((double) num1 * (double) num5) * num6;
-            }
-
-            Quaternion quaternion;
-            quaternion.x = (float) ((double) num3 * (double) quaternion1.x + (double) num4 * (double) quaternion2.x);
-            quaternion.y = (float) ((double) num3 * (double) quaternion1.y + (double) num4 * (double) quaternion2.y);
-            quaternion.z = (float) ((double) num3 * (double) quaternion1.z + (double) num4 * (double) quaternion2.z);
-            quaternion.w = (float) ((double) num3 * (double) quaternion1.w + (double) num4 * (double) quaternion2.w);
-            return quaternion;
-        }
-
-        public static void Slerp(ref Quaternion quaternion1, ref Quaternion quaternion2, float amount, out Quaternion result)
-        {
-            float num1 = amount;
-            float num2 = (float) ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w);
-            bool flag = false;
-            if ((double) num2 < 0.0)
-            {
-                flag = true;
-                num2 = -num2;
-            }
-
-            float num3;
-            float num4;
-            if ((double) num2 > 0.999998986721039)
-            {
-                num3 = 1f - num1;
-                num4 = flag? -num1 : num1;
-            }
-            else
-            {
-                float num5 = (float) Math.Acos((double) num2);
-                float num6 = (float) (1.0 / Math.Sin((double) num5));
-                num3 = (float) Math.Sin((1.0 - (double) num1) * (double) num5) * num6;
-                num4 = flag? (float) -Math.Sin((double) num1 * (double) num5) * num6 : (float) Math.Sin((double) num1 * (double) num5) * num6;
-            }
-
-            result.x = (float) ((double) num3 * (double) quaternion1.x + (double) num4 * (double) quaternion2.x);
-            result.y = (float) ((double) num3 * (double) quaternion1.y + (double) num4 * (double) quaternion2.y);
-            result.z = (float) ((double) num3 * (double) quaternion1.z + (double) num4 * (double) quaternion2.z);
-            result.w = (float) ((double) num3 * (double) quaternion1.w + (double) num4 * (double) quaternion2.w);
-        }
-
-        public static Quaternion Lerp(Quaternion quaternion1, Quaternion quaternion2, float amount)
-        {
-            float num1 = amount;
-            float num2 = 1f - num1;
-            Quaternion quaternion = new Quaternion();
-            if ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w >= 0.0)
-            {
-                quaternion.x = (float) ((double) num2 * (double) quaternion1.x + (double) num1 * (double) quaternion2.x);
-                quaternion.y = (float) ((double) num2 * (double) quaternion1.y + (double) num1 * (double) quaternion2.y);
-                quaternion.z = (float) ((double) num2 * (double) quaternion1.z + (double) num1 * (double) quaternion2.z);
-                quaternion.w = (float) ((double) num2 * (double) quaternion1.w + (double) num1 * (double) quaternion2.w);
-            }
-            else
-            {
-                quaternion.x = (float) ((double) num2 * (double) quaternion1.x - (double) num1 * (double) quaternion2.x);
-                quaternion.y = (float) ((double) num2 * (double) quaternion1.y - (double) num1 * (double) quaternion2.y);
-                quaternion.z = (float) ((double) num2 * (double) quaternion1.z - (double) num1 * (double) quaternion2.z);
-                quaternion.w = (float) ((double) num2 * (double) quaternion1.w - (double) num1 * (double) quaternion2.w);
-            }
-
-            float num3 = 1f / (float) Math.Sqrt((double) quaternion.x * (double) quaternion.x + (double) quaternion.y * (double) quaternion.y +
-                                                (double) quaternion.z * (double) quaternion.z + (double) quaternion.w * (double) quaternion.w);
-            quaternion.x *= num3;
-            quaternion.y *= num3;
-            quaternion.z *= num3;
-            quaternion.w *= num3;
-            return quaternion;
-        }
-
-        public static void Lerp(ref Quaternion quaternion1, ref Quaternion quaternion2, float amount, out Quaternion result)
-        {
-            float num1 = amount;
-            float num2 = 1f - num1;
-            if ((double) quaternion1.x * (double) quaternion2.x + (double) quaternion1.y * (double) quaternion2.y +
-                (double) quaternion1.z * (double) quaternion2.z + (double) quaternion1.w * (double) quaternion2.w >= 0.0)
-            {
-                result.x = (float) ((double) num2 * (double) quaternion1.x + (double) num1 * (double) quaternion2.x);
-                result.y = (float) ((double) num2 * (double) quaternion1.y + (double) num1 * (double) quaternion2.y);
-                result.z = (float) ((double) num2 * (double) quaternion1.z + (double) num1 * (double) quaternion2.z);
-                result.w = (float) ((double) num2 * (double) quaternion1.w + (double) num1 * (double) quaternion2.w);
-            }
-            else
-            {
-                result.x = (float) ((double) num2 * (double) quaternion1.x - (double) num1 * (double) quaternion2.x);
-                result.y = (float) ((double) num2 * (double) quaternion1.y - (double) num1 * (double) quaternion2.y);
-                result.z = (float) ((double) num2 * (double) quaternion1.z - (double) num1 * (double) quaternion2.z);
-                result.w = (float) ((double) num2 * (double) quaternion1.w - (double) num1 * (double) quaternion2.w);
-            }
-
-            float num3 = 1f / (float) Math.Sqrt((double) result.x * (double) result.x + (double) result.y * (double) result.y +
-                                                (double) result.z * (double) result.z + (double) result.w * (double) result.w);
-            result.x *= num3;
-            result.y *= num3;
-            result.z *= num3;
-            result.w *= num3;
-        }
-
-        public void Conjugate()
-        {
-            this.x = -this.x;
-            this.y = -this.y;
-            this.z = -this.z;
-        }
-
-        public static Quaternion Conjugate(Quaternion value)
-        {
-            Quaternion quaternion;
-            quaternion.x = -value.x;
-            quaternion.y = -value.y;
-            quaternion.z = -value.z;
-            quaternion.w = value.w;
-            return quaternion;
-        }
-
-        public static void Conjugate(ref Quaternion value, out Quaternion result)
-        {
-            result.x = -value.x;
-            result.y = -value.y;
-            result.z = -value.z;
-            result.w = value.w;
-        }
-
-        private static float Angle(Quaternion a, Quaternion b)
-        {
-            return (float) (Math.Acos((double) Math.Min(Math.Abs(Quaternion.Dot(a, b)), 1f)) * 2.0 * 57.2957801818848);
-        }
-
-        private static void Angle(ref Quaternion a, ref Quaternion b, out float result)
-        {
-            result = (float) (Math.Acos((double) Math.Min(Math.Abs(Quaternion.Dot(a, b)), 1f)) * 2.0 * 57.2957801818848);
-        }
-
-        public static Quaternion Negate(Quaternion quaternion)
-        {
-            Quaternion quaternion1;
-            quaternion1.x = -quaternion.x;
-            quaternion1.y = -quaternion.y;
-            quaternion1.z = -quaternion.z;
-            quaternion1.w = -quaternion.w;
-            return quaternion1;
-        }
-
-        public static void Negate(ref Quaternion quaternion, out Quaternion result)
-        {
-            result.x = -quaternion.x;
-            result.y = -quaternion.y;
-            result.z = -quaternion.z;
-            result.w = -quaternion.w;
-        }
-
-        public static Quaternion Sub(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            Quaternion quaternion;
-            quaternion.x = quaternion1.x - quaternion2.x;
-            quaternion.y = quaternion1.y - quaternion2.y;
-            quaternion.z = quaternion1.z - quaternion2.z;
-            quaternion.w = quaternion1.w - quaternion2.w;
-            return quaternion;
-        }
-
-        public static void Sub(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)
-        {
-            result.x = quaternion1.x - quaternion2.x;
-            result.y = quaternion1.y - quaternion2.y;
-            result.z = quaternion1.z - quaternion2.z;
-            result.w = quaternion1.w - quaternion2.w;
-        }
-
-        public static Vector3 Rotate(Quaternion rotation, Vector3 vector3)
-        {
-            float num1 = rotation.x * 2f;
-            float num2 = rotation.y * 2f;
-            float num3 = rotation.z * 2f;
-            float num4 = rotation.x * num1;
-            float num5 = rotation.y * num2;
-            float num6 = rotation.z * num3;
-            float num7 = rotation.x * num2;
-            float num8 = rotation.x * num3;
-            float num9 = rotation.y * num3;
-            float num10 = rotation.w * num1;
-            float num11 = rotation.w * num2;
-            float num12 = rotation.w * num3;
-            Vector3 vector3_1;
-            vector3_1.x = (float) ((1.0 - ((double) num5 + (double) num6)) * (double) vector3.x +
-                ((double) num7 - (double) num12) * (double) vector3.y + ((double) num8 + (double) num11) * (double) vector3.z);
-            vector3_1.y = (float) (((double) num7 + (double) num12) * (double) vector3.x +
-                (1.0 - ((double) num4 + (double) num6)) * (double) vector3.y + ((double) num9 - (double) num10) * (double) vector3.z);
-            vector3_1.z = (float) (((double) num8 - (double) num11) * (double) vector3.x + ((double) num9 + (double) num10) * (double) vector3.y +
-                (1.0 - ((double) num4 + (double) num5)) * (double) vector3.z);
-            return vector3_1;
-        }
-
-        public static void Rotate(ref Quaternion rotation, ref Vector3 vector3, out Vector3 result)
-        {
-            float num1 = rotation.x * 2f;
-            float num2 = rotation.y * 2f;
-            float num3 = rotation.z * 2f;
-            float num4 = rotation.x * num1;
-            float num5 = rotation.y * num2;
-            float num6 = rotation.z * num3;
-            float num7 = rotation.x * num2;
-            float num8 = rotation.x * num3;
-            float num9 = rotation.y * num3;
-            float num10 = rotation.w * num1;
-            float num11 = rotation.w * num2;
-            float num12 = rotation.w * num3;
-            result.x = (float) ((1.0 - ((double) num5 + (double) num6)) * (double) vector3.x + ((double) num7 - (double) num12) * (double) vector3.y +
-                ((double) num8 + (double) num11) * (double) vector3.z);
-            result.y = (float) (((double) num7 + (double) num12) * (double) vector3.x + (1.0 - ((double) num4 + (double) num6)) * (double) vector3.y +
-                ((double) num9 - (double) num10) * (double) vector3.z);
-            result.z = (float) (((double) num8 - (double) num11) * (double) vector3.x + ((double) num9 + (double) num10) * (double) vector3.y +
-                (1.0 - ((double) num4 + (double) num5)) * (double) vector3.z);
-        }
-
-        public static Quaternion Multiply(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            float x1 = quaternion1.x;
-            float y1 = quaternion1.y;
-            float z1 = quaternion1.z;
-            float w1 = quaternion1.w;
-            float x2 = quaternion2.x;
-            float y2 = quaternion2.y;
-            float z2 = quaternion2.z;
-            float w2 = quaternion2.w;
-            float num1 = (float) ((double) y1 * (double) z2 - (double) z1 * (double) y2);
-            float num2 = (float) ((double) z1 * (double) x2 - (double) x1 * (double) z2);
-            float num3 = (float) ((double) x1 * (double) y2 - (double) y1 * (double) x2);
-            float num4 = (float) ((double) x1 * (double) x2 + (double) y1 * (double) y2 + (double) z1 * (double) z2);
-            Quaternion quaternion;
-            quaternion.x = (float) ((double) x1 * (double) w2 + (double) x2 * (double) w1) + num1;
-            quaternion.y = (float) ((double) y1 * (double) w2 + (double) y2 * (double) w1) + num2;
-            quaternion.z = (float) ((double) z1 * (double) w2 + (double) z2 * (double) w1) + num3;
-            quaternion.w = w1 * w2 - num4;
-            return quaternion;
-        }
-
-        public static void Multiply(ref Quaternion quaternion1, ref Quaternion quaternion2, out Quaternion result)
-        {
-            float x1 = quaternion1.x;
-            float y1 = quaternion1.y;
-            float z1 = quaternion1.z;
-            float w1 = quaternion1.w;
-            float x2 = quaternion2.x;
-            float y2 = quaternion2.y;
-            float z2 = quaternion2.z;
-            float w2 = quaternion2.w;
-            float num1 = (float) ((double) y1 * (double) z2 - (double) z1 * (double) y2);
-            float num2 = (float) ((double) z1 * (double) x2 - (double) x1 * (double) z2);
-            float num3 = (float) ((double) x1 * (double) y2 - (double) y1 * (double) x2);
-            float num4 = (float) ((double) x1 * (double) x2 + (double) y1 * (double) y2 + (double) z1 * (double) z2);
-            result.x = (float) ((double) x1 * (double) w2 + (double) x2 * (double) w1) + num1;
-            result.y = (float) ((double) y1 * (double) w2 + (double) y2 * (double) w1) + num2;
-            result.z = (float) ((double) z1 * (double) w2 + (double) z2 * (double) w1) + num3;
-            result.w = w1 * w2 - num4;
-        }
-
-        public static Quaternion operator -(Quaternion quaternion)
-        {
-            Quaternion quaternion1;
-            quaternion1.x = -quaternion.x;
-            quaternion1.y = -quaternion.y;
-            quaternion1.z = -quaternion.z;
-            quaternion1.w = -quaternion.w;
-            return quaternion1;
-        }
-
-        public static bool operator ==(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            if ((double) quaternion1.x == (double) quaternion2.x && (double) quaternion1.y == (double) quaternion2.y &&
-                (double) quaternion1.z == (double) quaternion2.z)
-                return (double) quaternion1.w == (double) quaternion2.w;
-            return false;
-        }
-
-        public static bool operator !=(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            if ((double) quaternion1.x == (double) quaternion2.x && (double) quaternion1.y == (double) quaternion2.y &&
-                (double) quaternion1.z == (double) quaternion2.z)
-                return (double) quaternion1.w != (double) quaternion2.w;
-            return true;
-        }
-
-        public static Quaternion operator -(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            Quaternion quaternion;
-            quaternion.x = quaternion1.x - quaternion2.x;
-            quaternion.y = quaternion1.y - quaternion2.y;
-            quaternion.z = quaternion1.z - quaternion2.z;
-            quaternion.w = quaternion1.w - quaternion2.w;
-            return quaternion;
-        }
-
-        public static Quaternion operator *(Quaternion quaternion1, Quaternion quaternion2)
-        {
-            float x1 = quaternion1.x;
-            float y1 = quaternion1.y;
-            float z1 = quaternion1.z;
-            float w1 = quaternion1.w;
-            float x2 = quaternion2.x;
-            float y2 = quaternion2.y;
-            float z2 = quaternion2.z;
-            float w2 = quaternion2.w;
-            float num1 = (float) ((double) y1 * (double) z2 - (double) z1 * (double) y2);
-            float num2 = (float) ((double) z1 * (double) x2 - (double) x1 * (double) z2);
-            float num3 = (float) ((double) x1 * (double) y2 - (double) y1 * (double) x2);
-            float num4 = (float) ((double) x1 * (double) x2 + (double) y1 * (double) y2 + (double) z1 * (double) z2);
-            Quaternion quaternion;
-            quaternion.x = (float) ((double) x1 * (double) w2 + (double) x2 * (double) w1) + num1;
-            quaternion.y = (float) ((double) y1 * (double) w2 + (double) y2 * (double) w1) + num2;
-            quaternion.z = (float) ((double) z1 * (double) w2 + (double) z2 * (double) w1) + num3;
-            quaternion.w = w1 * w2 - num4;
-            return quaternion;
-        }
-        
-        public static Vector3 operator *(Quaternion rotation, Vector3 point)
-        {
-            float num1 = rotation.x * 2f;
-            float num2 = rotation.y * 2f;
-            float num3 = rotation.z * 2f;
-            float num4 = rotation.x * num1;
-            float num5 = rotation.y * num2;
-            float num6 = rotation.z * num3;
-            float num7 = rotation.x * num2;
-            float num8 = rotation.x * num3;
-            float num9 = rotation.y * num3;
-            float num10 = rotation.w * num1;
-            float num11 = rotation.w * num2;
-            float num12 = rotation.w * num3;
-            Vector3 vector3;
-            vector3.x = (float) ((1.0 - ((double) num5 + (double) num6)) * (double) point.x + ((double) num7 - (double) num12) * (double) point.y + ((double) num8 + (double) num11) * (double) point.z);
-            vector3.y = (float) (((double) num7 + (double) num12) * (double) point.x + (1.0 - ((double) num4 + (double) num6)) * (double) point.y + ((double) num9 - (double) num10) * (double) point.z);
-            vector3.z = (float) (((double) num8 - (double) num11) * (double) point.x + ((double) num9 + (double) num10) * (double) point.y + (1.0 - ((double) num4 + (double) num5)) * (double) point.z);
-            return vector3;
-        }
-    }
-}

+ 0 - 493
DotNet/ThirdParty/UnityEngine/Vector2.cs

@@ -1,493 +0,0 @@
-using System;
-using System.Globalization;
-
-namespace UnityEngine
-{
-    [Serializable]
-    public struct Vector2: IEquatable<Vector2>
-    {
-        public static readonly Vector2 zero = new Vector2();
-        public static readonly Vector2 one = new Vector2(1f, 1f);
-        
-        public float x;
-        public float y;
-        
-        public static implicit operator Vector2(Vector3 v)
-        {
-            return new Vector2(v.x, v.y);
-        }
-
-        public static implicit operator Vector3(Vector2 v)
-        {
-            return new Vector3(v.x, v.y, 0.0f);
-        }
-
-        public Vector2(float x, float y)
-        {
-            this.x = x;
-            this.y = y;
-        }
-
-        public Vector2(float value)
-        {
-            this.x = this.y = value;
-        }
-
-        public float this[int index]
-        {
-            get
-            {
-                if (index == 0)
-                    return this.x;
-                if (index == 1)
-                    return this.y;
-                throw new IndexOutOfRangeException("Invalid Vector2 index!");
-            }
-            set
-            {
-                if (index != 0)
-                {
-                    if (index != 1)
-                        throw new IndexOutOfRangeException("Invalid Vector2 index!");
-                    this.y = value;
-                }
-                else
-                    this.x = value;
-            }
-        }
-
-        public override string ToString()
-        {
-            CultureInfo currentCulture = CultureInfo.CurrentCulture;
-            return string.Format(currentCulture, "{0}, {1}",
-                                 new object[2]
-                                 {
-                                     this.x.ToString(currentCulture),
-                                     this.y.ToString(currentCulture)
-                                 });
-        }
-
-        public bool Equals(Vector2 other)
-        {
-            return this == other;
-        }
-
-        public override bool Equals(object obj)
-        {
-            bool flag = false;
-            if (obj is Vector2)
-                flag = this.Equals((Vector2) obj);
-            return flag;
-        }
-
-        public override int GetHashCode()
-        {
-            return this.x.GetHashCode() + this.y.GetHashCode();
-        }
-
-        public float Length()
-        {
-            return (float) Math.Sqrt(this.x * (double) this.x + this.y * (double) this.y);
-        }
-
-        public float LengthSquared()
-        {
-            return (float) (this.x * (double) this.x + this.y * (double) this.y);
-        }
-        
-        public float magnitude
-        {
-            get
-            {
-                return this.Length();
-            }
-        }
-        
-        public float sqrMagnitude
-        {
-            get
-            {
-                return this.LengthSquared();
-            }
-        }
-
-        public static float Distance(Vector2 value1, Vector2 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            return (float) Math.Sqrt(num1 * (double) num1 + num2 * (double) num2);
-        }
-
-        public static void Distance(ref Vector2 value1, ref Vector2 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = (float) (num1 * (double) num1 + num2 * (double) num2);
-            result = (float) Math.Sqrt(num3);
-        }
-
-        public static float DistanceSquared(Vector2 value1, Vector2 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            return (float) (num1 * (double) num1 + num2 * (double) num2);
-        }
-
-        public static void DistanceSquared(ref Vector2 value1, ref Vector2 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            result = (float) (num1 * (double) num1 + num2 * (double) num2);
-        }
-
-        public void Normalize()
-        {
-            float num1 = (float) (this.x * (double) this.x + this.y * (double) this.y);
-            if (num1 < 9.99999974737875E-06)
-                return;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            this.x *= num2;
-            this.y *= num2;
-        }
-
-        public static Vector2 Normalize(Vector2 value)
-        {
-            float num1 = (float) (value.x * (double) value.x + value.y * (double) value.y);
-            if (num1 < 9.99999974737875E-06)
-                return value;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            Vector2 vector2;
-            vector2.x = value.x * num2;
-            vector2.y = value.y * num2;
-            return vector2;
-        }
-
-        public static void Normalize(ref Vector2 value, out Vector2 result)
-        {
-            float num1 = (float) (value.x * (double) value.x + value.y * (double) value.y);
-            if (num1 < 9.99999974737875E-06)
-            {
-                result = value;
-            }
-            else
-            {
-                float num2 = 1f / (float) Math.Sqrt(num1);
-                result.x = value.x * num2;
-                result.y = value.y * num2;
-            }
-        }
-        
-        public Vector2 normalized
-        {
-            get
-            {
-                return Vector2.Normalize(this);
-            }
-        }
-
-        public static Vector2 Reflect(Vector2 vector, Vector2 normal)
-        {
-            float num = (float) (vector.x * (double) normal.x + vector.y * (double) normal.y);
-            Vector2 vector2;
-            vector2.x = vector.x - 2f * num * normal.x;
-            vector2.y = vector.y - 2f * num * normal.y;
-            return vector2;
-        }
-
-        public static void Reflect(ref Vector2 vector, ref Vector2 normal, out Vector2 result)
-        {
-            float num = (float) (vector.x * (double) normal.x + vector.y * (double) normal.y);
-            result.x = vector.x - 2f * num * normal.x;
-            result.y = vector.y - 2f * num * normal.y;
-        }
-
-        public static Vector2 Min(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            vector2.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-            return vector2;
-        }
-
-        public static void Min(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-        }
-
-        public static Vector2 Max(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            vector2.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-            return vector2;
-        }
-
-        public static void Max(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-        }
-
-        public static Vector2 Clamp(Vector2 value1, Vector2 min, Vector2 max)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            Vector2 vector2;
-            vector2.x = num2;
-            vector2.y = num4;
-            return vector2;
-        }
-
-        public static void Clamp(ref Vector2 value1, ref Vector2 min, ref Vector2 max, out Vector2 result)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            result.x = num2;
-            result.y = num4;
-        }
-
-        public static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x + (value2.x - value1.x) * amount;
-            vector2.y = value1.y + (value2.y - value1.y) * amount;
-            return vector2;
-        }
-
-        public static void Lerp(ref Vector2 value1, ref Vector2 value2, float amount, out Vector2 result)
-        {
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-        }
-
-        public static Vector2 SmoothStep(Vector2 value1, Vector2 value2, float amount)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            Vector2 vector2;
-            vector2.x = value1.x + (value2.x - value1.x) * amount;
-            vector2.y = value1.y + (value2.y - value1.y) * amount;
-            return vector2;
-        }
-
-        public static void SmoothStep(ref Vector2 value1, ref Vector2 value2, float amount, out Vector2 result)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-        }
-
-        public static Vector2 Negate(Vector2 value)
-        {
-            Vector2 vector2;
-            vector2.x = -value.x;
-            vector2.y = -value.y;
-            return vector2;
-        }
-
-        public static void Negate(ref Vector2 value, out Vector2 result)
-        {
-            result.x = -value.x;
-            result.y = -value.y;
-        }
-
-        public static float Dot(Vector2 value1, Vector2 value2)
-        {
-            return (float) (value1.x * (double) value2.x + value1.y * (double) value2.y);
-        }
-
-        public static void Dot(ref Vector2 value1, ref Vector2 value2, out float result)
-        {
-            result = (float) (value1.x * (double) value2.x + value1.y * (double) value2.y);
-        }
-
-        public static float Angle(Vector2 from, Vector2 to)
-        {
-            from.Normalize();
-            to.Normalize();
-            float result;
-            Vector2.Dot(ref from, ref to, out result);
-            return Mathf.Acos(Mathf.Clamp(result, -1f, 1f)) * 57.29578f;
-        }
-
-        public static void Angle(ref Vector2 from, ref Vector2 to, out float result)
-        {
-            from.Normalize();
-            to.Normalize();
-            float result1;
-            Vector2.Dot(ref from, ref to, out result1);
-            result = Mathf.Acos(Mathf.Clamp(result1, -1f, 1f)) * 57.29578f;
-        }
-
-        public static Vector2 Add(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x + value2.x;
-            vector2.y = value1.y + value2.y;
-            return vector2;
-        }
-
-        public static void Add(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = value1.x + value2.x;
-            result.y = value1.y + value2.y;
-        }
-
-        public static Vector2 Sub(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x - value2.x;
-            vector2.y = value1.y - value2.y;
-            return vector2;
-        }
-
-        public static void Sub(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = value1.x - value2.x;
-            result.y = value1.y - value2.y;
-        }
-
-        public static Vector2 Multiply(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x * value2.x;
-            vector2.y = value1.y * value2.y;
-            return vector2;
-        }
-
-        public static void Multiply(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = value1.x * value2.x;
-            result.y = value1.y * value2.y;
-        }
-
-        public static Vector2 Multiply(Vector2 value1, float scaleFactor)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x * scaleFactor;
-            vector2.y = value1.y * scaleFactor;
-            return vector2;
-        }
-
-        public static void Multiply(ref Vector2 value1, float scaleFactor, out Vector2 result)
-        {
-            result.x = value1.x * scaleFactor;
-            result.y = value1.y * scaleFactor;
-        }
-
-        public static Vector2 Divide(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x / value2.x;
-            vector2.y = value1.y / value2.y;
-            return vector2;
-        }
-
-        public static void Divide(ref Vector2 value1, ref Vector2 value2, out Vector2 result)
-        {
-            result.x = value1.x / value2.x;
-            result.y = value1.y / value2.y;
-        }
-
-        public static Vector2 Divide(Vector2 value1, float divider)
-        {
-            float num = 1f / divider;
-            Vector2 vector2;
-            vector2.x = value1.x * num;
-            vector2.y = value1.y * num;
-            return vector2;
-        }
-
-        public static void Divide(ref Vector2 value1, float divider, out Vector2 result)
-        {
-            float num = 1f / divider;
-            result.x = value1.x * num;
-            result.y = value1.y * num;
-        }
-
-        public static Vector2 operator -(Vector2 value)
-        {
-            Vector2 vector2;
-            vector2.x = -value.x;
-            vector2.y = -value.y;
-            return vector2;
-        }
-
-        public static bool operator ==(Vector2 lhs, Vector2 rhs)
-        {
-            return (lhs - rhs).sqrMagnitude < 9.99999943962493E-11;
-        }
-
-        public static bool operator !=(Vector2 lhs, Vector2 rhs)
-        {
-            return !(lhs == rhs);
-        }
-
-        public static Vector2 operator +(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x + value2.x;
-            vector2.y = value1.y + value2.y;
-            return vector2;
-        }
-
-        public static Vector2 operator -(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x - value2.x;
-            vector2.y = value1.y - value2.y;
-            return vector2;
-        }
-
-        public static Vector2 operator *(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x * value2.x;
-            vector2.y = value1.y * value2.y;
-            return vector2;
-        }
-
-        public static Vector2 operator *(Vector2 value, float scaleFactor)
-        {
-            Vector2 vector2;
-            vector2.x = value.x * scaleFactor;
-            vector2.y = value.y * scaleFactor;
-            return vector2;
-        }
-
-        public static Vector2 operator *(float scaleFactor, Vector2 value)
-        {
-            Vector2 vector2;
-            vector2.x = value.x * scaleFactor;
-            vector2.y = value.y * scaleFactor;
-            return vector2;
-        }
-
-        public static Vector2 operator /(Vector2 value1, Vector2 value2)
-        {
-            Vector2 vector2;
-            vector2.x = value1.x / value2.x;
-            vector2.y = value1.y / value2.y;
-            return vector2;
-        }
-
-        public static Vector2 operator /(Vector2 value1, float divider)
-        {
-            float num = 1f / divider;
-            Vector2 vector2;
-            vector2.x = value1.x * num;
-            vector2.y = value1.y * num;
-            return vector2;
-        }
-    }
-}

+ 0 - 656
DotNet/ThirdParty/UnityEngine/Vector3.cs

@@ -1,656 +0,0 @@
-using System;
-using System.Globalization;
-
-namespace UnityEngine
-{
-    [Serializable]
-    public struct Vector3: IEquatable<Vector3>
-    {
-        private const float k1OverSqrt2 = 0.7071068f;
-        private const float epsilon = 1E-05f;
-        public static readonly Vector3 zero = new Vector3();
-        public static readonly Vector3 one = new Vector3(1f, 1f, 1f);
-        public static readonly Vector3 up = new Vector3(0.0f, 1f, 0.0f);
-        public static readonly Vector3 down = new Vector3(0.0f, -1f, 0.0f);
-        public static readonly Vector3 right = new Vector3(1f, 0.0f, 0.0f);
-        public static readonly Vector3 left = new Vector3(-1f, 0.0f, 0.0f);
-        public static readonly Vector3 forward = new Vector3(0.0f, 0.0f, 1f);
-        public static readonly Vector3 back = new Vector3(0.0f, 0.0f, -1f);
-        public float x;
-        public float y;
-        public float z;
-
-        public Vector3(float x, float y, float z)
-        {
-            this.x = x;
-            this.y = y;
-            this.z = z;
-        }
-
-        public Vector3(float value)
-        {
-            this.x = this.y = this.z = value;
-        }
-
-        public Vector3(Vector2 value, float z)
-        {
-            this.x = value.x;
-            this.y = value.y;
-            this.z = z;
-        }
-
-        public override string ToString()
-        {
-            CultureInfo currentCulture = CultureInfo.CurrentCulture;
-            return string.Format(currentCulture, "({0}, {1}, {2})", this.x.ToString(currentCulture),
-                                 this.y.ToString(currentCulture),
-                                 this.z.ToString(currentCulture));
-        }
-
-        public bool Equals(Vector3 other)
-        {
-            if (this.x == (double) other.x && this.y == (double) other.y)
-                return this.z == (double) other.z;
-            return false;
-        }
-
-        public override bool Equals(object obj)
-        {
-            bool flag = false;
-            if (obj is Vector3)
-                flag = this.Equals((Vector3) obj);
-            return flag;
-        }
-
-        public override int GetHashCode()
-        {
-            return this.x.GetHashCode() + this.y.GetHashCode() + this.z.GetHashCode();
-        }
-
-        public float Length()
-        {
-            return (float) Math.Sqrt(this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z);
-        }
-
-        public float LengthSquared()
-        {
-            return (float) (this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z);
-        }
-
-        public float magnitude
-        {
-            get
-            {
-                return this.Length();
-            }
-        }
-        
-        public float sqrMagnitude
-        {
-            get
-            {
-                return this.LengthSquared();
-            }
-        }
-
-        public static float Distance(Vector3 value1, Vector3 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            return (float) Math.Sqrt(num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3);
-        }
-
-        public static void Distance(ref Vector3 value1, ref Vector3 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            float num4 = (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3);
-            result = (float) Math.Sqrt(num4);
-        }
-
-        public static float DistanceSquared(Vector3 value1, Vector3 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            return (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3);
-        }
-
-        public static void DistanceSquared(ref Vector3 value1, ref Vector3 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            result = (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3);
-        }
-
-        public static float Dot(Vector3 vector1, Vector3 vector2)
-        {
-            return (float) (vector1.x * (double) vector2.x + vector1.y * (double) vector2.y +
-                vector1.z * (double) vector2.z);
-        }
-
-        public static void Dot(ref Vector3 vector1, ref Vector3 vector2, out float result)
-        {
-            result = (float) (vector1.x * (double) vector2.x + vector1.y * (double) vector2.y +
-                vector1.z * (double) vector2.z);
-        }
-
-        public void Normalize()
-        {
-            float num1 = (float) (this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z);
-            if (num1 < (double) Mathf.Epsilon)
-                return;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            this.x *= num2;
-            this.y *= num2;
-            this.z *= num2;
-        }
-        
-        public Vector3 normalized
-        {
-            get
-            {
-                return Vector3.Normalize(this);
-            }
-        }
-
-        public static Vector3 Normalize(Vector3 value)
-        {
-            float num1 = (float) (value.x * (double) value.x + value.y * (double) value.y + value.z * (double) value.z);
-            if (num1 < (double) Mathf.Epsilon)
-                return value;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            Vector3 vector3;
-            vector3.x = value.x * num2;
-            vector3.y = value.y * num2;
-            vector3.z = value.z * num2;
-            return vector3;
-        }
-
-        public static void Normalize(ref Vector3 value, out Vector3 result)
-        {
-            float num1 = (float) (value.x * (double) value.x + value.y * (double) value.y + value.z * (double) value.z);
-            if (num1 < (double) Mathf.Epsilon)
-            {
-                result = value;
-            }
-            else
-            {
-                float num2 = 1f / (float) Math.Sqrt(num1);
-                result.x = value.x * num2;
-                result.y = value.y * num2;
-                result.z = value.z * num2;
-            }
-        }
-
-        public static Vector3 Cross(Vector3 vector1, Vector3 vector2)
-        {
-            Vector3 vector3;
-            vector3.x = (float) (vector1.y * (double) vector2.z - vector1.z * (double) vector2.y);
-            vector3.y = (float) (vector1.z * (double) vector2.x - vector1.x * (double) vector2.z);
-            vector3.z = (float) (vector1.x * (double) vector2.y - vector1.y * (double) vector2.x);
-            return vector3;
-        }
-
-        public static void Cross(ref Vector3 vector1, ref Vector3 vector2, out Vector3 result)
-        {
-            float num1 = (float) (vector1.y * (double) vector2.z - vector1.z * (double) vector2.y);
-            float num2 = (float) (vector1.z * (double) vector2.x - vector1.x * (double) vector2.z);
-            float num3 = (float) (vector1.x * (double) vector2.y - vector1.y * (double) vector2.x);
-            result.x = num1;
-            result.y = num2;
-            result.z = num3;
-        }
-
-        public static Vector3 Reflect(Vector3 vector, Vector3 normal)
-        {
-            float num =
-                    (float) (vector.x * (double) normal.x + vector.y * (double) normal.y + vector.z * (double) normal.z);
-            Vector3 vector3;
-            vector3.x = vector.x - 2f * num * normal.x;
-            vector3.y = vector.y - 2f * num * normal.y;
-            vector3.z = vector.z - 2f * num * normal.z;
-            return vector3;
-        }
-
-        public static void Reflect(ref Vector3 vector, ref Vector3 normal, out Vector3 result)
-        {
-            float num =
-                    (float) (vector.x * (double) normal.x + vector.y * (double) normal.y + vector.z * (double) normal.z);
-            result.x = vector.x - 2f * num * normal.x;
-            result.y = vector.y - 2f * num * normal.y;
-            result.z = vector.z - 2f * num * normal.z;
-        }
-
-        public static Vector3 Min(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            vector3.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-            vector3.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
-            return vector3;
-        }
-
-        public static void Min(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-            result.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
-        }
-
-        public static Vector3 Max(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            vector3.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-            vector3.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
-            return vector3;
-        }
-
-        public static void Max(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-            result.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
-        }
-
-        public static Vector3 Clamp(Vector3 value1, Vector3 min, Vector3 max)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            float z = value1.z;
-            float num5 = (double) z > (double) max.z? max.z : z;
-            float num6 = (double) num5 < (double) min.z? min.z : num5;
-            Vector3 vector3;
-            vector3.x = num2;
-            vector3.y = num4;
-            vector3.z = num6;
-            return vector3;
-        }
-
-        public static void Clamp(ref Vector3 value1, ref Vector3 min, ref Vector3 max, out Vector3 result)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            float z = value1.z;
-            float num5 = (double) z > (double) max.z? max.z : z;
-            float num6 = (double) num5 < (double) min.z? min.z : num5;
-            result.x = num2;
-            result.y = num4;
-            result.z = num6;
-        }
-
-        public static Vector3 Lerp(Vector3 value1, Vector3 value2, float amount)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x + (value2.x - value1.x) * amount;
-            vector3.y = value1.y + (value2.y - value1.y) * amount;
-            vector3.z = value1.z + (value2.z - value1.z) * amount;
-            return vector3;
-        }
-
-        public static void Lerp(ref Vector3 value1, ref Vector3 value2, float amount, out Vector3 result)
-        {
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-            result.z = value1.z + (value2.z - value1.z) * amount;
-        }
-
-        public static Vector3 SmoothStep(Vector3 value1, Vector3 value2, float amount)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            Vector3 vector3;
-            vector3.x = value1.x + (value2.x - value1.x) * amount;
-            vector3.y = value1.y + (value2.y - value1.y) * amount;
-            vector3.z = value1.z + (value2.z - value1.z) * amount;
-            return vector3;
-        }
-
-        public static void SmoothStep(ref Vector3 value1, ref Vector3 value2, float amount, out Vector3 result)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-            result.z = value1.z + (value2.z - value1.z) * amount;
-        }
-
-        public static Vector3 Hermite(Vector3 value1, Vector3 tangent1, Vector3 value2, Vector3 tangent2, float amount)
-        {
-            float num1 = amount * amount;
-            float num2 = amount * num1;
-            float num3 = (float) (2.0 * num2 - 3.0 * num1 + 1.0);
-            float num4 = (float) (-2.0 * num2 + 3.0 * num1);
-            float num5 = num2 - 2f * num1 + amount;
-            float num6 = num2 - num1;
-            Vector3 vector3;
-            vector3.x = (float) (value1.x * (double) num3 + value2.x * (double) num4 + tangent1.x * (double) num5 +
-                tangent2.x * (double) num6);
-            vector3.y = (float) (value1.y * (double) num3 + value2.y * (double) num4 + tangent1.y * (double) num5 +
-                tangent2.y * (double) num6);
-            vector3.z = (float) (value1.z * (double) num3 + value2.z * (double) num4 + tangent1.z * (double) num5 +
-                tangent2.z * (double) num6);
-            return vector3;
-        }
-
-        public static void Hermite(
-            ref Vector3 value1, ref Vector3 tangent1, ref Vector3 value2, ref Vector3 tangent2, float amount, out Vector3 result)
-        {
-            float num1 = amount * amount;
-            float num2 = amount * num1;
-            float num3 = (float) (2.0 * num2 - 3.0 * num1 + 1.0);
-            float num4 = (float) (-2.0 * num2 + 3.0 * num1);
-            float num5 = num2 - 2f * num1 + amount;
-            float num6 = num2 - num1;
-            result.x = (float) (value1.x * (double) num3 + value2.x * (double) num4 + tangent1.x * (double) num5 +
-                tangent2.x * (double) num6);
-            result.y = (float) (value1.y * (double) num3 + value2.y * (double) num4 + tangent1.y * (double) num5 +
-                tangent2.y * (double) num6);
-            result.z = (float) (value1.z * (double) num3 + value2.z * (double) num4 + tangent1.z * (double) num5 +
-                tangent2.z * (double) num6);
-        }
-
-        public static Vector3 Negate(Vector3 value)
-        {
-            Vector3 vector3;
-            vector3.x = -value.x;
-            vector3.y = -value.y;
-            vector3.z = -value.z;
-            return vector3;
-        }
-
-        public static void Negate(ref Vector3 value, out Vector3 result)
-        {
-            result.x = -value.x;
-            result.y = -value.y;
-            result.z = -value.z;
-        }
-
-        public static Vector3 Add(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x + value2.x;
-            vector3.y = value1.y + value2.y;
-            vector3.z = value1.z + value2.z;
-            return vector3;
-        }
-
-        public static void Add(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = value1.x + value2.x;
-            result.y = value1.y + value2.y;
-            result.z = value1.z + value2.z;
-        }
-
-        public static Vector3 Sub(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x - value2.x;
-            vector3.y = value1.y - value2.y;
-            vector3.z = value1.z - value2.z;
-            return vector3;
-        }
-
-        public static void Sub(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = value1.x - value2.x;
-            result.y = value1.y - value2.y;
-            result.z = value1.z - value2.z;
-        }
-
-        public static Vector3 Multiply(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x * value2.x;
-            vector3.y = value1.y * value2.y;
-            vector3.z = value1.z * value2.z;
-            return vector3;
-        }
-
-        public static void Multiply(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = value1.x * value2.x;
-            result.y = value1.y * value2.y;
-            result.z = value1.z * value2.z;
-        }
-
-        public static Vector3 Multiply(Vector3 value1, float scaleFactor)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x * scaleFactor;
-            vector3.y = value1.y * scaleFactor;
-            vector3.z = value1.z * scaleFactor;
-            return vector3;
-        }
-
-        public static void Multiply(ref Vector3 value1, float scaleFactor, out Vector3 result)
-        {
-            result.x = value1.x * scaleFactor;
-            result.y = value1.y * scaleFactor;
-            result.z = value1.z * scaleFactor;
-        }
-
-        public static Vector3 Divide(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x / value2.x;
-            vector3.y = value1.y / value2.y;
-            vector3.z = value1.z / value2.z;
-            return vector3;
-        }
-
-        public static void Divide(ref Vector3 value1, ref Vector3 value2, out Vector3 result)
-        {
-            result.x = value1.x / value2.x;
-            result.y = value1.y / value2.y;
-            result.z = value1.z / value2.z;
-        }
-
-        public static Vector3 Divide(Vector3 value1, float divider)
-        {
-            float num = 1f / divider;
-            Vector3 vector3;
-            vector3.x = value1.x * num;
-            vector3.y = value1.y * num;
-            vector3.z = value1.z * num;
-            return vector3;
-        }
-
-        public static void Divide(ref Vector3 value1, float divider, out Vector3 result)
-        {
-            float num = 1f / divider;
-            result.x = value1.x * num;
-            result.y = value1.y * num;
-            result.z = value1.z * num;
-        }
-
-        private static float magnitudeStatic(ref Vector3 inV)
-        {
-            return (float) Math.Sqrt(Vector3.Dot(inV, inV));
-        }
-
-        private static Vector3 orthoNormalVectorFast(ref Vector3 n)
-        {
-            Vector3 vector3;
-            if (Math.Abs(n.z) > (double) Vector3.k1OverSqrt2)
-            {
-                float num = 1f / (float) Math.Sqrt(n.y * (double) n.y + n.z * (double) n.z);
-                vector3.x = 0.0f;
-                vector3.y = -n.z * num;
-                vector3.z = n.y * num;
-            }
-            else
-            {
-                float num = 1f / (float) Math.Sqrt(n.x * (double) n.x + n.y * (double) n.y);
-                vector3.x = -n.y * num;
-                vector3.y = n.x * num;
-                vector3.z = 0.0f;
-            }
-
-            return vector3;
-        }
-
-        public static void OrthoNormalize(ref Vector3 normal, ref Vector3 tangent)
-        {
-            float num1 = Vector3.magnitudeStatic(ref normal);
-            if (num1 > (double) Mathf.Epsilon)
-                normal /= num1;
-            else
-                normal = new Vector3(1f, 0.0f, 0.0f);
-            float num2 = Vector3.Dot(normal, tangent);
-            tangent -= num2 * normal;
-            float num3 = Vector3.magnitudeStatic(ref tangent);
-            if (num3 < (double) Mathf.Epsilon)
-                tangent = Vector3.orthoNormalVectorFast(ref normal);
-            else
-                tangent /= num3;
-        }
-
-        public static void OrthoNormalize(ref Vector3 normal, ref Vector3 tangent, ref Vector3 binormal)
-        {
-            float num1 = Vector3.magnitudeStatic(ref normal);
-            if (num1 > (double) Mathf.Epsilon)
-                normal /= num1;
-            else
-                normal = new Vector3(1f, 0.0f, 0.0f);
-            float num2 = Vector3.Dot(normal, tangent);
-            tangent -= num2 * normal;
-            float num3 = Vector3.magnitudeStatic(ref tangent);
-            if (num3 > (double) Mathf.Epsilon)
-                tangent /= num3;
-            else
-                tangent = Vector3.orthoNormalVectorFast(ref normal);
-            float num4 = Vector3.Dot(tangent, binormal);
-            float num5 = Vector3.Dot(normal, binormal);
-            binormal -= num5 * normal + num4 * tangent;
-            float num6 = Vector3.magnitudeStatic(ref binormal);
-            if (num6 > (double) Mathf.Epsilon)
-                binormal /= num6;
-            else
-                binormal = Vector3.Cross(normal, tangent);
-        }
-
-        public static Vector3 Project(Vector3 vector, Vector3 onNormal)
-        {
-            return onNormal * Vector3.Dot(vector, onNormal) / Vector3.Dot(onNormal, onNormal);
-        }
-
-        public static void Project(ref Vector3 vector, ref Vector3 onNormal, out Vector3 result)
-        {
-            result = onNormal * Vector3.Dot(vector, onNormal) / Vector3.Dot(onNormal, onNormal);
-        }
-
-        public static float Angle(Vector3 from, Vector3 to)
-        {
-            from.Normalize();
-            to.Normalize();
-            float result;
-            Vector3.Dot(ref from, ref to, out result);
-            return Mathf.Acos(Mathf.Clamp(result, -1f, 1f)) * 57.29578f;
-        }
-
-        public static void Angle(ref Vector3 from, ref Vector3 to, out float result)
-        {
-            from.Normalize();
-            to.Normalize();
-            float result1;
-            Vector3.Dot(ref from, ref to, out result1);
-            result = Mathf.Acos(Mathf.Clamp(result1, -1f, 1f)) * 57.29578f;
-        }
-
-        public static Vector3 operator -(Vector3 value)
-        {
-            Vector3 vector3;
-            vector3.x = -value.x;
-            vector3.y = -value.y;
-            vector3.z = -value.z;
-            return vector3;
-        }
-
-        public static bool operator ==(Vector3 lhs, Vector3 rhs)
-        {
-            return (lhs - rhs).sqrMagnitude < 9.99999943962493E-11;
-        }
-
-        public static bool operator !=(Vector3 lhs, Vector3 rhs)
-        {
-            return !(lhs == rhs);
-        }
-
-        public static Vector3 operator +(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x + value2.x;
-            vector3.y = value1.y + value2.y;
-            vector3.z = value1.z + value2.z;
-            return vector3;
-        }
-
-        public static Vector3 operator -(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x - value2.x;
-            vector3.y = value1.y - value2.y;
-            vector3.z = value1.z - value2.z;
-            return vector3;
-        }
-
-        public static Vector3 operator *(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x * value2.x;
-            vector3.y = value1.y * value2.y;
-            vector3.z = value1.z * value2.z;
-            return vector3;
-        }
-
-        public static Vector3 operator *(Vector3 value, float scaleFactor)
-        {
-            Vector3 vector3;
-            vector3.x = value.x * scaleFactor;
-            vector3.y = value.y * scaleFactor;
-            vector3.z = value.z * scaleFactor;
-            return vector3;
-        }
-
-        public static Vector3 operator *(float scaleFactor, Vector3 value)
-        {
-            Vector3 vector3;
-            vector3.x = value.x * scaleFactor;
-            vector3.y = value.y * scaleFactor;
-            vector3.z = value.z * scaleFactor;
-            return vector3;
-        }
-
-        public static Vector3 operator /(Vector3 value1, Vector3 value2)
-        {
-            Vector3 vector3;
-            vector3.x = value1.x / value2.x;
-            vector3.y = value1.y / value2.y;
-            vector3.z = value1.z / value2.z;
-            return vector3;
-        }
-
-        public static Vector3 operator /(Vector3 value, float divider)
-        {
-            float num = 1f / divider;
-            Vector3 vector3;
-            vector3.x = value.x * num;
-            vector3.y = value.y * num;
-            vector3.z = value.z * num;
-            return vector3;
-        }
-    }
-}

+ 0 - 575
DotNet/ThirdParty/UnityEngine/Vector4.cs

@@ -1,575 +0,0 @@
-using System;
-using System.Globalization;
-
-namespace UnityEngine
-{
-    [Serializable]
-    public struct Vector4: IEquatable<Vector4>
-    {
-        public static readonly Vector4 zero = new Vector4();
-        public static readonly Vector4 one = new Vector4(1f, 1f, 1f, 1f);
-        public float x;
-        public float y;
-        public float z;
-        public float w;
-        
-        public Vector4(float x, float y, float z, float w)
-        {
-            this.x = x;
-            this.y = y;
-            this.z = z;
-            this.w = w;
-        }
-
-        public Vector4(Vector2 value, float z, float w)
-        {
-            this.x = value.x;
-            this.y = value.y;
-            this.z = z;
-            this.w = w;
-        }
-
-        public Vector4(Vector3 value, float w)
-        {
-            this.x = value.x;
-            this.y = value.y;
-            this.z = value.z;
-            this.w = w;
-        }
-
-        public Vector4(float value)
-        {
-            this.x = this.y = this.z = this.w = value;
-        }
-
-        public override string ToString()
-        {
-            CultureInfo currentCulture = CultureInfo.CurrentCulture;
-            return string.Format(currentCulture, "{0}, {1}, {2}, {3}", (object) this.x.ToString(currentCulture),
-                                 (object) this.y.ToString(currentCulture),
-                                 (object) this.z.ToString(currentCulture),
-                                 (object) this.w.ToString(currentCulture));
-        }
-
-        public bool Equals(Vector4 other)
-        {
-            if (this.x == (double) other.x && this.y == (double) other.y && this.z == (double) other.z)
-                return this.w == (double) other.w;
-            return false;
-        }
-
-        public override bool Equals(object obj)
-        {
-            bool flag = false;
-            if (obj is Vector4)
-                flag = this.Equals((Vector4) obj);
-            return flag;
-        }
-
-        public override int GetHashCode()
-        {
-            return this.x.GetHashCode() + this.y.GetHashCode() + this.z.GetHashCode() + this.w.GetHashCode();
-        }
-
-        public float Length()
-        {
-            return (float) Math.Sqrt(this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z +
-                                     this.w * (double) this.w);
-        }
-
-        public float LengthSquared()
-        {
-            return (float) (this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z +
-                this.w * (double) this.w);
-        }
-
-        public static float Distance(Vector4 value1, Vector4 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            float num4 = value1.w - value2.w;
-            return (float) Math.Sqrt(num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3 +
-                                     num4 * (double) num4);
-        }
-
-        public static void Distance(ref Vector4 value1, ref Vector4 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            float num4 = value1.w - value2.w;
-            float num5 = (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3 +
-                num4 * (double) num4);
-            result = (float) Math.Sqrt(num5);
-        }
-
-        public static float DistanceSquared(Vector4 value1, Vector4 value2)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            float num4 = value1.w - value2.w;
-            return (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3 +
-                num4 * (double) num4);
-        }
-
-        public static void DistanceSquared(ref Vector4 value1, ref Vector4 value2, out float result)
-        {
-            float num1 = value1.x - value2.x;
-            float num2 = value1.y - value2.y;
-            float num3 = value1.z - value2.z;
-            float num4 = value1.w - value2.w;
-            result = (float) (num1 * (double) num1 + num2 * (double) num2 + num3 * (double) num3 +
-                num4 * (double) num4);
-        }
-
-        public static float Dot(Vector4 vector1, Vector4 vector2)
-        {
-            return (float) (vector1.x * (double) vector2.x + vector1.y * (double) vector2.y +
-                vector1.z * (double) vector2.z + vector1.w * (double) vector2.w);
-        }
-
-        public static void Dot(ref Vector4 vector1, ref Vector4 vector2, out float result)
-        {
-            result = (float) (vector1.x * (double) vector2.x + vector1.y * (double) vector2.y +
-                vector1.z * (double) vector2.z + vector1.w * (double) vector2.w);
-        }
-
-        public void Normalize()
-        {
-            float num1 = (float) (this.x * (double) this.x + this.y * (double) this.y + this.z * (double) this.z +
-                this.w * (double) this.w);
-            if (num1 < (double) Mathf.Epsilon)
-                return;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            this.x *= num2;
-            this.y *= num2;
-            this.z *= num2;
-            this.w *= num2;
-        }
-
-        public static Vector4 Normalize(Vector4 vector)
-        {
-            float num1 = (float) (vector.x * (double) vector.x + vector.y * (double) vector.y +
-                vector.z * (double) vector.z + vector.w * (double) vector.w);
-            if (num1 < (double) Mathf.Epsilon)
-                return vector;
-            float num2 = 1f / (float) Math.Sqrt(num1);
-            Vector4 vector4;
-            vector4.x = vector.x * num2;
-            vector4.y = vector.y * num2;
-            vector4.z = vector.z * num2;
-            vector4.w = vector.w * num2;
-            return vector4;
-        }
-
-        public static void Normalize(ref Vector4 vector, out Vector4 result)
-        {
-            float num1 = (float) (vector.x * (double) vector.x + vector.y * (double) vector.y +
-                vector.z * (double) vector.z + vector.w * (double) vector.w);
-            if (num1 < (double) Mathf.Epsilon)
-            {
-                result = vector;
-            }
-            else
-            {
-                float num2 = 1f / (float) Math.Sqrt(num1);
-                result.x = vector.x * num2;
-                result.y = vector.y * num2;
-                result.z = vector.z * num2;
-                result.w = vector.w * num2;
-            }
-        }
-
-        public static Vector4 Min(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            vector4.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-            vector4.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
-            vector4.w = (double) value1.w < (double) value2.w? value1.w : value2.w;
-            return vector4;
-        }
-
-        public static void Min(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
-            result.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
-            result.w = (double) value1.w < (double) value2.w? value1.w : value2.w;
-        }
-
-        public static Vector4 Max(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            vector4.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-            vector4.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
-            vector4.w = (double) value1.w > (double) value2.w? value1.w : value2.w;
-            return vector4;
-        }
-
-        public static void Max(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
-            result.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
-            result.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
-            result.w = (double) value1.w > (double) value2.w? value1.w : value2.w;
-        }
-
-        public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            float z = value1.z;
-            float num5 = (double) z > (double) max.z? max.z : z;
-            float num6 = (double) num5 < (double) min.z? min.z : num5;
-            float w = value1.w;
-            float num7 = (double) w > (double) max.w? max.w : w;
-            float num8 = (double) num7 < (double) min.w? min.w : num7;
-            Vector4 vector4;
-            vector4.x = num2;
-            vector4.y = num4;
-            vector4.z = num6;
-            vector4.w = num8;
-            return vector4;
-        }
-
-        public static void Clamp(ref Vector4 value1, ref Vector4 min, ref Vector4 max, out Vector4 result)
-        {
-            float x = value1.x;
-            float num1 = (double) x > (double) max.x? max.x : x;
-            float num2 = (double) num1 < (double) min.x? min.x : num1;
-            float y = value1.y;
-            float num3 = (double) y > (double) max.y? max.y : y;
-            float num4 = (double) num3 < (double) min.y? min.y : num3;
-            float z = value1.z;
-            float num5 = (double) z > (double) max.z? max.z : z;
-            float num6 = (double) num5 < (double) min.z? min.z : num5;
-            float w = value1.w;
-            float num7 = (double) w > (double) max.w? max.w : w;
-            float num8 = (double) num7 < (double) min.w? min.w : num7;
-            result.x = num2;
-            result.y = num4;
-            result.z = num6;
-            result.w = num8;
-        }
-
-        public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x + (value2.x - value1.x) * amount;
-            vector4.y = value1.y + (value2.y - value1.y) * amount;
-            vector4.z = value1.z + (value2.z - value1.z) * amount;
-            vector4.w = value1.w + (value2.w - value1.w) * amount;
-            return vector4;
-        }
-
-        public static void Lerp(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)
-        {
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-            result.z = value1.z + (value2.z - value1.z) * amount;
-            result.w = value1.w + (value2.w - value1.w) * amount;
-        }
-
-        public static Vector4 SmoothStep(Vector4 value1, Vector4 value2, float amount)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            Vector4 vector4;
-            vector4.x = value1.x + (value2.x - value1.x) * amount;
-            vector4.y = value1.y + (value2.y - value1.y) * amount;
-            vector4.z = value1.z + (value2.z - value1.z) * amount;
-            vector4.w = value1.w + (value2.w - value1.w) * amount;
-            return vector4;
-        }
-
-        public static void SmoothStep(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)
-        {
-            amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
-            amount = (float) (amount * (double) amount * (3.0 - 2.0 * amount));
-            result.x = value1.x + (value2.x - value1.x) * amount;
-            result.y = value1.y + (value2.y - value1.y) * amount;
-            result.z = value1.z + (value2.z - value1.z) * amount;
-            result.w = value1.w + (value2.w - value1.w) * amount;
-        }
-
-        public static Vector4 Hermite(Vector4 value1, Vector4 tangent1, Vector4 value2, Vector4 tangent2, float amount)
-        {
-            float num1 = amount * amount;
-            float num2 = amount * num1;
-            float num3 = (float) (2.0 * num2 - 3.0 * num1 + 1.0);
-            float num4 = (float) (-2.0 * num2 + 3.0 * num1);
-            float num5 = num2 - 2f * num1 + amount;
-            float num6 = num2 - num1;
-            Vector4 vector4;
-            vector4.x = (float) (value1.x * (double) num3 + value2.x * (double) num4 + tangent1.x * (double) num5 +
-                tangent2.x * (double) num6);
-            vector4.y = (float) (value1.y * (double) num3 + value2.y * (double) num4 + tangent1.y * (double) num5 +
-                tangent2.y * (double) num6);
-            vector4.z = (float) (value1.z * (double) num3 + value2.z * (double) num4 + tangent1.z * (double) num5 +
-                tangent2.z * (double) num6);
-            vector4.w = (float) (value1.w * (double) num3 + value2.w * (double) num4 + tangent1.w * (double) num5 +
-                tangent2.w * (double) num6);
-            return vector4;
-        }
-
-        public static void Hermite(
-            ref Vector4 value1, ref Vector4 tangent1, ref Vector4 value2, ref Vector4 tangent2, float amount, out Vector4 result)
-        {
-            float num1 = amount * amount;
-            float num2 = amount * num1;
-            float num3 = (float) (2.0 * num2 - 3.0 * num1 + 1.0);
-            float num4 = (float) (-2.0 * num2 + 3.0 * num1);
-            float num5 = num2 - 2f * num1 + amount;
-            float num6 = num2 - num1;
-            result.x = (float) (value1.x * (double) num3 + value2.x * (double) num4 + tangent1.x * (double) num5 +
-                tangent2.x * (double) num6);
-            result.y = (float) (value1.y * (double) num3 + value2.y * (double) num4 + tangent1.y * (double) num5 +
-                tangent2.y * (double) num6);
-            result.z = (float) (value1.z * (double) num3 + value2.z * (double) num4 + tangent1.z * (double) num5 +
-                tangent2.z * (double) num6);
-            result.w = (float) (value1.w * (double) num3 + value2.w * (double) num4 + tangent1.w * (double) num5 +
-                tangent2.w * (double) num6);
-        }
-
-        public static Vector4 Project(Vector4 vector, Vector4 onNormal)
-        {
-            return onNormal * Vector4.Dot(vector, onNormal) / Vector4.Dot(onNormal, onNormal);
-        }
-
-        public static void Project(ref Vector4 vector, ref Vector4 onNormal, out Vector4 result)
-        {
-            result = onNormal * Vector4.Dot(vector, onNormal) / Vector4.Dot(onNormal, onNormal);
-        }
-
-        public static Vector4 Negate(Vector4 value)
-        {
-            Vector4 vector4;
-            vector4.x = -value.x;
-            vector4.y = -value.y;
-            vector4.z = -value.z;
-            vector4.w = -value.w;
-            return vector4;
-        }
-
-        public static void Negate(ref Vector4 value, out Vector4 result)
-        {
-            result.x = -value.x;
-            result.y = -value.y;
-            result.z = -value.z;
-            result.w = -value.w;
-        }
-
-        public static Vector4 Add(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x + value2.x;
-            vector4.y = value1.y + value2.y;
-            vector4.z = value1.z + value2.z;
-            vector4.w = value1.w + value2.w;
-            return vector4;
-        }
-
-        public static void Add(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = value1.x + value2.x;
-            result.y = value1.y + value2.y;
-            result.z = value1.z + value2.z;
-            result.w = value1.w + value2.w;
-        }
-
-        public static Vector4 Sub(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x - value2.x;
-            vector4.y = value1.y - value2.y;
-            vector4.z = value1.z - value2.z;
-            vector4.w = value1.w - value2.w;
-            return vector4;
-        }
-
-        public static void Sub(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = value1.x - value2.x;
-            result.y = value1.y - value2.y;
-            result.z = value1.z - value2.z;
-            result.w = value1.w - value2.w;
-        }
-
-        public static Vector4 Multiply(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x * value2.x;
-            vector4.y = value1.y * value2.y;
-            vector4.z = value1.z * value2.z;
-            vector4.w = value1.w * value2.w;
-            return vector4;
-        }
-
-        public static void Multiply(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = value1.x * value2.x;
-            result.y = value1.y * value2.y;
-            result.z = value1.z * value2.z;
-            result.w = value1.w * value2.w;
-        }
-
-        public static Vector4 Multiply(Vector4 value1, float scaleFactor)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x * scaleFactor;
-            vector4.y = value1.y * scaleFactor;
-            vector4.z = value1.z * scaleFactor;
-            vector4.w = value1.w * scaleFactor;
-            return vector4;
-        }
-
-        public static void Multiply(ref Vector4 value1, float scaleFactor, out Vector4 result)
-        {
-            result.x = value1.x * scaleFactor;
-            result.y = value1.y * scaleFactor;
-            result.z = value1.z * scaleFactor;
-            result.w = value1.w * scaleFactor;
-        }
-
-        public static Vector4 Divide(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x / value2.x;
-            vector4.y = value1.y / value2.y;
-            vector4.z = value1.z / value2.z;
-            vector4.w = value1.w / value2.w;
-            return vector4;
-        }
-
-        public static void Divide(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
-        {
-            result.x = value1.x / value2.x;
-            result.y = value1.y / value2.y;
-            result.z = value1.z / value2.z;
-            result.w = value1.w / value2.w;
-        }
-
-        public static Vector4 Divide(Vector4 value1, float divider)
-        {
-            float num = 1f / divider;
-            Vector4 vector4;
-            vector4.x = value1.x * num;
-            vector4.y = value1.y * num;
-            vector4.z = value1.z * num;
-            vector4.w = value1.w * num;
-            return vector4;
-        }
-
-        public static void Divide(ref Vector4 value1, float divider, out Vector4 result)
-        {
-            float num = 1f / divider;
-            result.x = value1.x * num;
-            result.y = value1.y * num;
-            result.z = value1.z * num;
-            result.w = value1.w * num;
-        }
-
-        public static Vector4 operator -(Vector4 value)
-        {
-            Vector4 vector4;
-            vector4.x = -value.x;
-            vector4.y = -value.y;
-            vector4.z = -value.z;
-            vector4.w = -value.w;
-            return vector4;
-        }
-
-        public static bool operator ==(Vector4 value1, Vector4 value2)
-        {
-            if (value1.x == (double) value2.x && value1.y == (double) value2.y && value1.z == (double) value2.z)
-                return value1.w == (double) value2.w;
-            return false;
-        }
-
-        public static bool operator !=(Vector4 value1, Vector4 value2)
-        {
-            if (value1.x == (double) value2.x && value1.y == (double) value2.y && value1.z == (double) value2.z)
-                return value1.w != (double) value2.w;
-            return true;
-        }
-
-        public static Vector4 operator +(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x + value2.x;
-            vector4.y = value1.y + value2.y;
-            vector4.z = value1.z + value2.z;
-            vector4.w = value1.w + value2.w;
-            return vector4;
-        }
-
-        public static Vector4 operator -(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x - value2.x;
-            vector4.y = value1.y - value2.y;
-            vector4.z = value1.z - value2.z;
-            vector4.w = value1.w - value2.w;
-            return vector4;
-        }
-
-        public static Vector4 operator *(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x * value2.x;
-            vector4.y = value1.y * value2.y;
-            vector4.z = value1.z * value2.z;
-            vector4.w = value1.w * value2.w;
-            return vector4;
-        }
-
-        public static Vector4 operator *(Vector4 value1, float scaleFactor)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x * scaleFactor;
-            vector4.y = value1.y * scaleFactor;
-            vector4.z = value1.z * scaleFactor;
-            vector4.w = value1.w * scaleFactor;
-            return vector4;
-        }
-
-        public static Vector4 operator *(float scaleFactor, Vector4 value1)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x * scaleFactor;
-            vector4.y = value1.y * scaleFactor;
-            vector4.z = value1.z * scaleFactor;
-            vector4.w = value1.w * scaleFactor;
-            return vector4;
-        }
-
-        public static Vector4 operator /(Vector4 value1, Vector4 value2)
-        {
-            Vector4 vector4;
-            vector4.x = value1.x / value2.x;
-            vector4.y = value1.y / value2.y;
-            vector4.z = value1.z / value2.z;
-            vector4.w = value1.w / value2.w;
-            return vector4;
-        }
-
-        public static Vector4 operator /(Vector4 value1, float divider)
-        {
-            float num = 1f / divider;
-            Vector4 vector4;
-            vector4.x = value1.x * num;
-            vector4.y = value1.y * num;
-            vector4.z = value1.z * num;
-            vector4.w = value1.w * num;
-            return vector4;
-        }
-    }
-}

+ 0 - 2
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/AI_Attack.cs

@@ -1,5 +1,3 @@
-using UnityEngine;
-
 namespace ET.Client
 {
     public class AI_Attack: AAIHandler

+ 2 - 2
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/AI_XunLuo.cs

@@ -1,4 +1,4 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
@@ -29,7 +29,7 @@ namespace ET.Client
             while (true)
             {
                 XunLuoPathComponent xunLuoPathComponent = myUnit.GetComponent<XunLuoPathComponent>();
-                Vector3 nextTarget = xunLuoPathComponent.GetCurrent();
+                float3 nextTarget = xunLuoPathComponent.GetCurrent();
                 int ret = await myUnit.MoveToAsync(nextTarget, cancellationToken);
                 if (ret != 0)
                 {

+ 2 - 2
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/AI/XunLuoPathComponentSystem.cs

@@ -1,11 +1,11 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
     [FriendOf(typeof(XunLuoPathComponent))]
     public static class XunLuoPathComponentSystem
     {
-        public static Vector3 GetCurrent(this XunLuoPathComponent self)
+        public static float3 GetCurrent(this XunLuoPathComponent self)
         {
             return self.path[self.Index];
         }

+ 3 - 3
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/M2C_PathfindingResultHandler.cs

@@ -1,5 +1,5 @@
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
@@ -12,11 +12,11 @@ namespace ET.Client
 
 			float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed);
 
-			using (ListComponent<Vector3> list = ListComponent<Vector3>.Create())
+			using (ListComponent<float3> list = ListComponent<float3>.Create())
 			{
 				for (int i = 0; i < message.Xs.Count; ++i)
 				{
-					list.Add(new Vector3(message.Xs[i], message.Ys[i], message.Zs[i]));
+					list.Add(new float3(message.Xs[i], message.Ys[i], message.Zs[i]));
 				}
 
 				await unit.GetComponent<MoveComponent>().MoveToAsync(list, speed);

+ 3 - 3
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/M2C_StopHandler.cs

@@ -1,4 +1,4 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
@@ -13,8 +13,8 @@ namespace ET.Client
 				return;
 			}
 
-			Vector3 pos = new Vector3(message.X, message.Y, message.Z);
-			Quaternion rotation = new Quaternion(message.A, message.B, message.C, message.W);
+			float3 pos = new float3(message.X, message.Y, message.Z);
+			quaternion rotation = new quaternion(message.A, message.B, message.C, message.W);
 
 			MoveComponent moveComponent = unit.GetComponent<MoveComponent>();
 			moveComponent.Stop();

+ 4 - 3
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Move/MoveHelper.cs

@@ -1,12 +1,13 @@
 using System.Collections.Generic;
-using UnityEngine;
+using System.Numerics;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
     public static class MoveHelper
     {
         // 可以多次调用,多次调用的话会取消上一次的协程
-        public static async ETTask<int> MoveToAsync(this Unit unit, Vector3 targetPos, ETCancellationToken cancellationToken = null)
+        public static async ETTask<int> MoveToAsync(this Unit unit, float3 targetPos, ETCancellationToken cancellationToken = null)
         {
             C2M_PathfindingResult msg = new C2M_PathfindingResult() {X = targetPos.x, Y = targetPos.y, Z = targetPos.z};
             unit.ClientScene().GetComponent<SessionComponent>().Session.Send(msg);
@@ -21,7 +22,7 @@ namespace ET.Client
             return waitUnitStop.Error;
         }
         
-        public static async ETTask<bool> MoveToAsync(this Unit unit, List<Vector3> path)
+        public static async ETTask<bool> MoveToAsync(this Unit unit, List<float3> path)
         {
             float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed);
             MoveComponent moveComponent = unit.GetComponent<MoveComponent>();

+ 5 - 5
Unity/Assets/Scripts/Codes/Hotfix/Client/Demo/Unit/UnitFactory.cs

@@ -1,4 +1,4 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
@@ -10,8 +10,8 @@ namespace ET.Client
 	        Unit unit = unitComponent.AddChildWithId<Unit, int>(unitInfo.UnitId, unitInfo.ConfigId);
 	        unitComponent.Add(unit);
 	        
-	        unit.Position = new Vector3(unitInfo.X, unitInfo.Y, unitInfo.Z);
-	        unit.Forward = new Vector3(unitInfo.ForwardX, unitInfo.ForwardY, unitInfo.ForwardZ);
+	        unit.Position = new float3(unitInfo.X, unitInfo.Y, unitInfo.Z);
+	        unit.Forward = new float3(unitInfo.ForwardX, unitInfo.ForwardY, unitInfo.ForwardZ);
 	        
 	        NumericComponent numericComponent = unit.AddComponent<NumericComponent>();
 	        for (int i = 0; i < unitInfo.Ks.Count; ++i)
@@ -24,12 +24,12 @@ namespace ET.Client
 	        {
 		        if (unitInfo.MoveInfo.X.Count > 0)
 		        {
-			        using (ListComponent<Vector3> list = ListComponent<Vector3>.Create())
+			        using (ListComponent<float3> list = ListComponent<float3>.Create())
 			        {
 				        list.Add(unit.Position);
 				        for (int i = 0; i < unitInfo.MoveInfo.X.Count; ++i)
 				        {
-					        list.Add(new Vector3(unitInfo.MoveInfo.X[i], unitInfo.MoveInfo.Y[i], unitInfo.MoveInfo.Z[i]));
+					        list.Add(new float3(unitInfo.MoveInfo.X[i], unitInfo.MoveInfo.Y[i], unitInfo.MoveInfo.Z[i]));
 				        }
 
 				        unit.MoveToAsync(list).Coroutine();

+ 2 - 2
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/AOI/ChangePosition_NotifyAOI.cs

@@ -1,4 +1,4 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -8,7 +8,7 @@ namespace ET.Server
         protected override async ETTask Run(Scene scene, ET.EventType.ChangePosition args)
         {
             Unit unit = args.Unit;
-            Vector3 oldPos = args.OldPos;
+            float3 oldPos = args.OldPos;
             int oldCellX = (int) (oldPos.x * 1000) / AOIManagerComponent.CellSize;
             int oldCellY = (int) (oldPos.z * 1000) / AOIManagerComponent.CellSize;
             int newCellX = (int) (unit.Position.x * 1000) / AOIManagerComponent.CellSize;

+ 2 - 2
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/C2M_PathfindingResultHandler.cs

@@ -1,5 +1,5 @@
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -8,7 +8,7 @@ namespace ET.Server
 	{
 		protected override async ETTask Run(Unit unit, C2M_PathfindingResult message)
 		{
-			Vector3 target = new Vector3(message.X, message.Y, message.Z);
+			float3 target = new float3(message.X, message.Y, message.Z);
 
 			unit.FindPathMoveToAsync(target).Coroutine();
 			

+ 1 - 4
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/C2M_StopHandler.cs

@@ -1,7 +1,4 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace ET.Server
+namespace ET.Server
 {
 	[ActorMessageHandler(SceneType.Map)]
 	public class C2M_StopHandler : AMActorLocationHandler<Unit, C2M_Stop>

+ 10 - 9
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Move/MoveHelper.cs

@@ -1,12 +1,13 @@
 using System.Collections.Generic;
-using UnityEngine;
+using System.Numerics;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
     public static class MoveHelper
     {
         // 可以多次调用,多次调用的话会取消上一次的协程
-        public static async ETTask FindPathMoveToAsync(this Unit unit, Vector3 target, ETCancellationToken cancellationToken = null)
+        public static async ETTask FindPathMoveToAsync(this Unit unit, float3 target, ETCancellationToken cancellationToken = null)
         {
             float speed = unit.GetComponent<NumericComponent>().GetAsFloat(NumericType.Speed);
             if (speed < 0.01)
@@ -15,11 +16,11 @@ namespace ET.Server
                 return;
             }
 
-            using var list = ListComponent<Vector3>.Create();
+            using var list = ListComponent<float3>.Create();
             
             unit.GetComponent<PathfindingComponent>().Find(unit.Position, target, list);
 
-            List<Vector3> path = list;
+            List<float3> path = list;
             if (path.Count < 2)
             {
                 unit.SendStop(0);
@@ -31,7 +32,7 @@ namespace ET.Server
             m2CPathfindingResult.Id = unit.Id;
             for (int i = 0; i < list.Count; ++i)
             {
-                Vector3 vector3 = list[i];
+                float3 vector3 = list[i];
                 m2CPathfindingResult.Xs.Add(vector3.x);
                 m2CPathfindingResult.Ys.Add(vector3.y);
                 m2CPathfindingResult.Zs.Add(vector3.z);
@@ -61,10 +62,10 @@ namespace ET.Server
                 Y = unit.Position.y,
                 Z = unit.Position.z,
 						
-                A = unit.Rotation.x,
-                B = unit.Rotation.y,
-                C = unit.Rotation.z,
-                W = unit.Rotation.w,
+                A = unit.Rotation.value.x,
+                B = unit.Rotation.value.y,
+                C = unit.Rotation.value.z,
+                W = unit.Rotation.value.w,
             });
         }
     }

+ 3 - 3
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Transfer/M2M_UnitTransferRequestHandler.cs

@@ -1,5 +1,5 @@
 using System;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -23,7 +23,7 @@ namespace ET.Server
 			
 			unit.AddComponent<MoveComponent>();
 			unit.AddComponent<PathfindingComponent, string>(scene.Name);
-			unit.Position = new Vector3(-10, 0, -10);
+			unit.Position = new float3(-10, 0, -10);
 			
 			unit.AddComponent<MailBoxComponent>();
 			
@@ -33,7 +33,7 @@ namespace ET.Server
 			MessageHelper.SendToClient(unit, m2CCreateUnits);
 			
 			// 加入aoi
-			unit.AddComponent<AOIEntity, int, Vector3>(9 * 1000, unit.Position);
+			unit.AddComponent<AOIEntity, int, float3>(9 * 1000, unit.Position);
 
 			response.NewInstanceId = unit.InstanceId;
 			

+ 3 - 3
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Unit/UnitFactory.cs

@@ -1,5 +1,5 @@
 using System;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -14,7 +14,7 @@ namespace ET.Server
                 {
                     Unit unit = unitComponent.AddChildWithId<Unit, int>(id, 1001);
                     unit.AddComponent<MoveComponent>();
-                    unit.Position = new Vector3(-10, 0, -10);
+                    unit.Position = new float3(-10, 0, -10);
 			
                     NumericComponent numericComponent = unit.AddComponent<NumericComponent>();
                     numericComponent.Set(NumericType.Speed, 6f); // 速度是6米每秒
@@ -22,7 +22,7 @@ namespace ET.Server
                     
                     unitComponent.Add(unit);
                     // 加入aoi
-                    unit.AddComponent<AOIEntity, int, Vector3>(9 * 1000, unit.Position);
+                    unit.AddComponent<AOIEntity, int, float3>(9 * 1000, unit.Position);
                     return unit;
                 }
                 default:

+ 4 - 4
Unity/Assets/Scripts/Codes/Hotfix/Server/Demo/Scenes/Map/Unit/UnitHelper.cs

@@ -1,5 +1,5 @@
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -14,11 +14,11 @@ namespace ET.Server
             unitInfo.UnitId = unit.Id;
             unitInfo.ConfigId = unit.ConfigId;
             unitInfo.Type = (int)unit.Type;
-            Vector3 position = unit.Position;
+            float3 position = unit.Position;
             unitInfo.X = position.x;
             unitInfo.Y = position.y;
             unitInfo.Z = position.z;
-            Vector3 forward = unit.Forward;
+            float3 forward = unit.Forward;
             unitInfo.ForwardX = forward.x;
             unitInfo.ForwardY = forward.y;
             unitInfo.ForwardZ = forward.z;
@@ -31,7 +31,7 @@ namespace ET.Server
                     unitInfo.MoveInfo = new MoveInfo();
                     for (int i = moveComponent.N; i < moveComponent.Targets.Count; ++i)
                     {
-                        Vector3 pos = moveComponent.Targets[i];
+                        float3 pos = moveComponent.Targets[i];
                         unitInfo.MoveInfo.X.Add(pos.x);
                         unitInfo.MoveInfo.Y.Add(pos.y);
                         unitInfo.MoveInfo.Z.Add(pos.z);

+ 3 - 3
Unity/Assets/Scripts/Codes/Hotfix/Server/Module/AOI/AOIEntitySystem.cs

@@ -1,5 +1,5 @@
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
@@ -8,9 +8,9 @@ namespace ET.Server
     public static class AOIEntitySystem
     {
         [ObjectSystem]
-        public class AwakeSystem: AwakeSystem<AOIEntity, int, Vector3>
+        public class AwakeSystem: AwakeSystem<AOIEntity, int, float3>
         {
-            protected override void Awake(AOIEntity self, int distance, Vector3 pos)
+            protected override void Awake(AOIEntity self, int distance, float3 pos)
             {
                 self.ViewDistance = distance;
                 self.DomainScene().GetComponent<AOIManagerComponent>().Add(self, pos.x, pos.z);

+ 25 - 22
Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Move/MoveComponentSystem.cs

@@ -1,6 +1,6 @@
 using System;
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
@@ -24,7 +24,7 @@ namespace ET
         }
     
         [ObjectSystem]
-        public class MoveComponentDestroySystem: DestroySystem<MoveComponent>
+        public class DestroySystem: DestroySystem<MoveComponent>
         {
             protected override void Destroy(MoveComponent self)
             {
@@ -33,12 +33,12 @@ namespace ET
         }
 
         [ObjectSystem]
-        public class MoveComponentAwakeSystem: AwakeSystem<MoveComponent>
+        public class AwakeSystem: AwakeSystem<MoveComponent>
         {
             protected override void Awake(MoveComponent self)
             {
                 self.StartTime = 0;
-                self.StartPos = Vector3.zero;
+                self.StartPos = float3.zero;
                 self.NeedTime = 0;
                 self.MoveTimer = 0;
                 self.tcs = null;
@@ -68,7 +68,7 @@ namespace ET
             
             Unit unit = self.GetParent<Unit>();
 
-            using ListComponent<Vector3> path = ListComponent<Vector3>.Create();
+            using ListComponent<float3> path = ListComponent<float3>.Create();
             
             self.MoveForward(true);
                 
@@ -81,11 +81,11 @@ namespace ET
             return true;
         }
 
-        public static async ETTask<bool> MoveToAsync(this MoveComponent self, List<Vector3> target, float speed, int turnTime = 100, ETCancellationToken cancellationToken = null)
+        public static async ETTask<bool> MoveToAsync(this MoveComponent self, List<float3> target, float speed, int turnTime = 100, ETCancellationToken cancellationToken = null)
         {
             self.Stop();
 
-            foreach (Vector3 v in target)
+            foreach (float3 v in target)
             {
                 self.Targets.Add(v);
             }
@@ -122,7 +122,7 @@ namespace ET
             return moveRet;
         }
 
-        public static void MoveForward(this MoveComponent self, bool needCancel)
+        private static void MoveForward(this MoveComponent self, bool needCancel)
         {
             Unit unit = self.GetParent<Unit>();
             
@@ -151,7 +151,7 @@ namespace ET
                     float amount = moveTime * 1f / self.NeedTime;
                     if (amount > 0)
                     {
-                        Vector3 newPos = Vector3.Lerp(self.StartPos, self.NextTarget, amount);
+                        float3 newPos = math.lerp(self.StartPos, self.NextTarget, amount);
                         unit.Position = newPos;
                     }
                     
@@ -159,7 +159,11 @@ namespace ET
                     if (self.TurnTime > 0)
                     {
                         amount = moveTime * 1f / self.TurnTime;
-                        Quaternion q = Quaternion.Slerp(self.From, self.To, amount);
+                        if (amount > 1)
+                        {
+                            amount = 1f;
+                        }
+                        quaternion q = math.slerp(self.From, self.To, amount);
                         unit.Rotation = q;
                     }
                 }
@@ -208,8 +212,8 @@ namespace ET
             ++self.N;
 
             // 时间计算用服务端的位置, 但是移动要用客户端的位置来插值
-            Vector3 v = self.GetFaceV();
-            float distance = v.magnitude;
+            float3 v = self.GetFaceV();
+            float distance = math.length(v);
             
             // 插值的起始点要以unit的真实位置来算
             self.StartPos = unit.Position;
@@ -217,13 +221,12 @@ namespace ET
             self.StartTime += self.NeedTime;
             
             self.NeedTime = (long) (distance / self.Speed * 1000);
-
             
             if (self.TurnTime > 0)
             {
                 // 要用unit的位置
-                Vector3 faceV = self.GetFaceV();
-                if (faceV.sqrMagnitude < 0.0001f)
+                float3 faceV = self.GetFaceV();
+                if (math.lengthsq(faceV) < 0.0001f)
                 {
                     return;
                 }
@@ -236,7 +239,7 @@ namespace ET
 
                 if (Math.Abs(faceV.x) > 0.01 || Math.Abs(faceV.z) > 0.01)
                 {
-                    self.To = Quaternion.LookRotation(faceV, Vector3.up);
+                    self.To = quaternion.LookRotation(faceV, math.up());
                 }
 
                 return;
@@ -244,7 +247,7 @@ namespace ET
             
             if (self.TurnTime == 0) // turn time == 0 立即转向
             {
-                Vector3 faceV = self.GetFaceV();
+                float3 faceV = self.GetFaceV();
                 if (self.IsTurnHorizontal)
                 {
                     faceV.y = 0;
@@ -252,18 +255,18 @@ namespace ET
 
                 if (Math.Abs(faceV.x) > 0.01 || Math.Abs(faceV.z) > 0.01)
                 {
-                    self.To = Quaternion.LookRotation(faceV, Vector3.up);
+                    self.To = quaternion.LookRotation(faceV, math.up());
                     unit.Rotation = self.To;
                 }
             }
         }
 
-        private static Vector3 GetFaceV(this MoveComponent self)
+        private static float3 GetFaceV(this MoveComponent self)
         {
             return self.NextTarget - self.PreTarget;
         }
 
-        public static bool FlashTo(this MoveComponent self, Vector3 target)
+        public static bool FlashTo(this MoveComponent self, float3 target)
         {
             Unit unit = self.GetParent<Unit>();
             unit.Position = target;
@@ -280,10 +283,10 @@ namespace ET
             self.Clear();
         }
 
-        public static void Clear(this MoveComponent self)
+        private static void Clear(this MoveComponent self)
         {
             self.StartTime = 0;
-            self.StartPos = Vector3.zero;
+            self.StartPos = float3.zero;
             self.BeginTime = 0;
             self.NeedTime = 0;
             TimerComponent.Instance?.Remove(ref self.MoveTimer);

+ 17 - 17
Unity/Assets/Scripts/Codes/Hotfix/Share/Module/Recast/PathfindingComponentSystem.cs

@@ -1,6 +1,6 @@
 using System;
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
@@ -32,7 +32,7 @@ namespace ET
             }
         }
         
-        public static void Find(this PathfindingComponent self, Vector3 start, Vector3 target, List<Vector3> result)
+        public static void Find(this PathfindingComponent self, float3 start, float3 target, List<float3> result)
         {
             if (self.NavMesh == 0)
             {
@@ -52,22 +52,22 @@ namespace ET
             for (int i = 0; i < n; ++i)
             {
                 int index = i * 3;
-                result.Add(new Vector3(-self.Result[index], self.Result[index + 1], self.Result[index + 2]));
+                result.Add(new float3(-self.Result[index], self.Result[index + 1], self.Result[index + 2]));
             }
             //Log.Debug($"finish find path: {self.GetParent<Unit>().Id} {result.ListToString()}");
         }
 
-        public static void FindWithAdjust(this PathfindingComponent self, Vector3 start, Vector3 target, List<Vector3> result,float adjustRaduis)
+        public static void FindWithAdjust(this PathfindingComponent self, float3 start, float3 target, List<float3> result,float adjustRaduis)
         {
             self.Find(start, target, result);
             for (int i = 0; i < result.Count; i++)
             {
-                Vector3 adjust = self.FindRandomPointWithRaduis(result[i], adjustRaduis);
+                float3 adjust = self.FindRandomPointWithRaduis(result[i], adjustRaduis);
                 result[i] = adjust;
             }
         }
         
-        public static Vector3 FindRandomPointWithRaduis(this PathfindingComponent self, Vector3 pos, float raduis)
+        public static float3 FindRandomPointWithRaduis(this PathfindingComponent self, float3 pos, float raduis)
         {
             if (self.NavMesh == 0)
             {
@@ -82,10 +82,10 @@ namespace ET
             int degrees = RandomGenerator.RandomNumber(0, 360);
             float r = RandomGenerator.RandomNumber(0, (int) (raduis * 1000)) / 1000f;
 
-            float x = r * Mathf.Cos(MathHelper.DegToRad(degrees));
-            float z = r * Mathf.Sin(MathHelper.DegToRad(degrees));
+            float x = r * math.cos(math.radians(degrees)); 
+            float z = r * math.sin(math.radians(degrees));
 
-            Vector3 findpos = new Vector3(pos.x + x, pos.y, pos.z + z);
+            float3 findpos = new float3(pos.x + x, pos.y, pos.z + z);
 
             return self.RecastFindNearestPoint(findpos);
         }
@@ -99,7 +99,7 @@ namespace ET
         /// <param name="height"></param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public static Vector3 FindRandomPointWithRectangle(this PathfindingComponent self, Vector3 pos, int width, int height)
+        public static float3 FindRandomPointWithRectangle(this PathfindingComponent self, float3 pos, int width, int height)
         {
             if (self.NavMesh == 0)
             {
@@ -114,12 +114,12 @@ namespace ET
             float x = RandomGenerator.RandomNumber(-width, width);
             float z = RandomGenerator.RandomNumber(-height, height);
 
-            Vector3 findpos = new Vector3(pos.x + x, pos.y, pos.z + z);
+            float3 findpos = new float3(pos.x + x, pos.y, pos.z + z);
 
             return self.RecastFindNearestPoint(findpos);
         }
         
-        public static Vector3 FindRandomPointWithRaduis(this PathfindingComponent self, Vector3 pos, float minRadius, float maxRadius)
+        public static float3 FindRandomPointWithRaduis(this PathfindingComponent self, float3 pos, float minRadius, float maxRadius)
         {
             if (self.NavMesh == 0)
             {
@@ -134,15 +134,15 @@ namespace ET
             int degrees = RandomGenerator.RandomNumber(0, 360);
             float r = RandomGenerator.RandomNumber((int) (minRadius * 1000), (int) (maxRadius * 1000)) / 1000f;
 
-            float x = r * Mathf.Cos(MathHelper.DegToRad(degrees));
-            float z = r * Mathf.Sin(MathHelper.DegToRad(degrees));
+            float x = r * math.cos(math.radians(degrees));
+            float z = r * math.sin(math.radians(degrees));
 
-            Vector3 findpos = new Vector3(pos.x + x, pos.y, pos.z + z);
+            float3 findpos = new float3(pos.x + x, pos.y, pos.z + z);
 
             return self.RecastFindNearestPoint(findpos);
         }
 
-        public static Vector3 RecastFindNearestPoint(this PathfindingComponent self, Vector3 pos)
+        public static float3 RecastFindNearestPoint(this PathfindingComponent self, float3 pos)
         {
             if (self.NavMesh == 0)
             {
@@ -159,7 +159,7 @@ namespace ET
                 throw new Exception($"RecastFindNearestPoint fail, 可能是位置配置有问题: sceneName:{self.DomainScene().Name} {pos} {self.Name} {self.GetParent<Unit>().Id} {self.GetParent<Unit>().Config.Id} {self.EndPos.ArrayToString()}");
             }
             
-            return new Vector3(-self.EndPos[0], self.EndPos[1], self.EndPos[2]);
+            return new float3(-self.EndPos[0], self.EndPos[1], self.EndPos[2]);
         }
     }
 }

+ 2 - 1
Unity/Assets/Scripts/Codes/Hotfix/Unity.Hotfix.Codes.asmdef

@@ -5,7 +5,8 @@
         "Unity.Mono",
         "Unity.ThirdParty",
         "Unity.Core",
-        "Unity.Model.Codes"
+        "Unity.Model.Codes",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 1
Unity/Assets/Scripts/Codes/HotfixView/Unity.HotfixView.Codes.asmdef

@@ -7,7 +7,8 @@
         "Unity.Core",
         "Unity.Model.Codes",
         "Unity.Hotfix.Codes",
-        "Unity.ModelView.Codes"
+        "Unity.ModelView.Codes",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 2
Unity/Assets/Scripts/Codes/Model/Client/Demo/AI/XunLuoPathComponent.cs

@@ -1,11 +1,11 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Client
 {
     [ComponentOf(typeof(Unit))]
     public class XunLuoPathComponent: Entity, IAwake
     {
-        public Vector3[] path = new Vector3[] { new Vector3(0, 0, 0), new Vector3(20, 0, 0), new Vector3(20, 0, 20), new Vector3(0, 0, 20), };
+        public float3[] path = new float3[] { new float3(0, 0, 0), new float3(20, 0, 0), new float3(20, 0, 20), new float3(0, 0, 20), };
 
         public int Index;
     }

+ 0 - 8
Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 7062b0c5eca99be46aa63d180a17f7de
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 113
Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper/PositionHelper.cs

@@ -1,113 +0,0 @@
-using UnityEngine;
-
-namespace ET.Client
-{
-	public static class PositionHelper
-	{
-		public static Vector3 RayCastV2ToV3(Vector2 pos)
-		{
-            return new Vector3(pos.x, 0, pos.y);
-		}
-
-		public static Vector3 RayCastXYToV3(float x, float y)
-        {
-			return new Vector3(x, 0, y);
-		}
-
-		public static Vector3 RayCastV3ToV3(Vector3 pos)
-		{
-			return new Vector3(pos.x, 0, pos.z);
-		}
-
-		public static Quaternion GetVector3ToQuaternion(Vector3 source, Vector3 dire)
-		{
-			Vector3 nowPos = source;
-			if (nowPos == dire)
-			{
-				return new Quaternion();
-			}
-			Vector3 direction = (dire - nowPos).normalized;
-			return Quaternion.LookRotation(direction, Vector3.up);
-		}
-
-        public static float Distance2D(Unit u1, Unit u2)
-        {
-            Vector2 v1 = new Vector2(u1.Position.x, u1.Position.z);
-            Vector2 v2 = new Vector2(u2.Position.x, u2.Position.z);
-            return Vector2.Distance(v1, v2);
-        }
-
-        public static float Distance2D(Vector3 v1, Vector3 v2)
-        {
-            Vector2 d1 = new Vector2(v1.x, v1.z);
-            Vector2 d2 = new Vector2(v2.x, v2.z);
-            return Vector2.Distance(d1, d2);
-        }
-
-		public static float Vector3ToAngle360(Vector3 from, Vector3 to)
-		{
-			float angle = Vector3.Angle(from, to);
-			Vector3 cross = Vector3.Cross(from, to);
-			return cross.y > 0? angle : 360 - angle;
-		}
-        /// <summary>
-        ///  求点到直线的距离,采用数学公式Ax+By+C = 0; d = A*p.x + B * p.y + C / sqrt(A^2 + B ^ 2)
-        /// </summary>
-        /// <param name="startPoint"></param>
-        /// <param name="endPoint"></param>
-        /// <param name="point"></param>
-        /// <returns></returns>
-	    public static float DistanceOfPointToVector(Vector3 startPoint, Vector3 endPoint, Vector3 point)
-	    {
-            Vector2 startVe2 = startPoint.IgnoreYAxis();
-            Vector2 endVe2 = endPoint.IgnoreYAxis();
-            float A = endVe2.y - startVe2.y;
-            float B = startVe2.x - endVe2.x;
-            float C = endVe2.x * startVe2.y - startVe2.x * endVe2.y;
-            float denominator = Mathf.Sqrt(A * A + B * B);
-            Vector2 pointVe2 = point.IgnoreYAxis();
-            return Mathf.Abs((A * pointVe2.x + B * pointVe2.y + C) / denominator);
-        }
-        /// <summary>
-        /// 勾股定理
-        /// </summary>
-        /// <param name="x"></param>
-        /// <param name="y"></param>
-        /// <returns></returns>
-        public static float GGTheorem(float x, float y)
-        {
-            return Mathf.Sqrt(x * x + y * y);
-        }
-        /// <summary>
-        /// 去掉三维向量的Y轴,把向量投射到xz平面。
-        /// </summary>
-        /// <param name="vector3"></param>
-        /// <returns></returns>
-	    public static Vector2 IgnoreYAxis(this Vector3 vector3)
-	    {
-            return new Vector2(vector3.x, vector3.z);
-        }
-        /// <summary>
-        /// 判断目标点是否位于向量的左边
-        /// </summary>
-        /// <returns>True is on left, false is on right</returns>
-        public static bool PointOnLeftSideOfVector(this Vector3 vector3, Vector3 originPoint, Vector3 point)
-        {
-            Vector2 originVec2 = originPoint.IgnoreYAxis();
-
-            Vector2 pointVec2 = (point.IgnoreYAxis() - originVec2).normalized;
-
-            Vector2 vector2 = vector3.IgnoreYAxis();
-
-            float verticalX = originVec2.x;
-
-            float verticalY = (-verticalX * vector2.x) / vector2.y;
-
-            Vector2 norVertical = (new Vector2(verticalX, verticalY)).normalized;
-
-            float dotValue = Vector2.Dot(norVertical, pointVec2);
-
-            return dotValue < 0f;
-        }
-	}
-}

+ 0 - 11
Unity/Assets/Scripts/Codes/Model/Client/Demo/Helper/PositionHelper.cs.meta

@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 3984d9cb5b1c0f64a9e0a48469112b93
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 2 - 2
Unity/Assets/Scripts/Codes/Model/Server/Module/AOI/AOIEntity.cs

@@ -1,10 +1,10 @@
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET.Server
 {
     [ComponentOf(typeof(Unit))]
-    public class AOIEntity: Entity, IAwake<int, Vector3>, IDestroy
+    public class AOIEntity: Entity, IAwake<int, float3>, IDestroy
     {
         public Unit Unit => this.GetParent<Unit>();
 

+ 9 - 9
Unity/Assets/Scripts/Codes/Model/Share/Module/Move/MoveComponent.cs

@@ -1,13 +1,13 @@
 using System;
 using System.Collections.Generic;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
     [ComponentOf(typeof(Unit))]
     public class MoveComponent: Entity, IAwake, IDestroy
     {
-        public Vector3 PreTarget
+        public float3 PreTarget
         {
             get
             {
@@ -15,7 +15,7 @@ namespace ET
             }
         }
 
-        public Vector3 NextTarget
+        public float3 NextTarget
         {
             get
             {
@@ -30,9 +30,9 @@ namespace ET
         public long StartTime { get; set; }
 
         // 开启移动协程的Unit的位置
-        public Vector3 StartPos;
+        public float3 StartPos;
 
-        public Vector3 RealPos
+        public float3 RealPos
         {
             get
             {
@@ -60,9 +60,9 @@ namespace ET
 
         public ETTask<bool> tcs;
 
-        public List<Vector3> Targets = new List<Vector3>();
+        public List<float3> Targets = new List<float3>();
 
-        public Vector3 FinalTarget
+        public float3 FinalTarget
         {
             get
             {
@@ -76,8 +76,8 @@ namespace ET
 
         public bool IsTurnHorizontal;
 
-        public Quaternion From;
+        public quaternion From;
 
-        public Quaternion To;
+        public quaternion To;
     }
 }

+ 9 - 9
Unity/Assets/Scripts/Codes/Model/Share/Module/Unit/Unit.cs

@@ -1,6 +1,6 @@
 using System.Diagnostics;
 using MongoDB.Bson.Serialization.Attributes;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
@@ -16,32 +16,32 @@ namespace ET
         public UnitType Type => (UnitType)UnitConfigCategory.Instance.Get(this.ConfigId).Type;
 
         [BsonElement]
-        private Vector3 position; //坐标
+        private float3 position; //坐标
 
         [BsonIgnore]
-        public Vector3 Position
+        public float3 Position
         {
             get => this.position;
             set
             {
-                Vector3 oldPos = this.position;
+                float3 oldPos = this.position;
                 this.position = value;
                 EventSystem.Instance.Publish(this.DomainScene(), new EventType.ChangePosition() { Unit = this, OldPos = oldPos });
             }
         }
 
         [BsonIgnore]
-        public Vector3 Forward
+        public float3 Forward
         {
-            get => this.Rotation * Vector3.forward;
-            set => this.Rotation = Quaternion.LookRotation(value, Vector3.up);
+            get => math.mul(this.Rotation, math.forward());
+            set => this.Rotation = quaternion.LookRotation(value, math.up());
         }
         
         [BsonElement]
-        private Quaternion rotation;
+        private quaternion rotation;
         
         [BsonIgnore]
-        public Quaternion Rotation
+        public quaternion Rotation
         {
             get => this.rotation;
             set

+ 2 - 2
Unity/Assets/Scripts/Codes/Model/Share/Module/Unit/UnitEventType.cs

@@ -1,4 +1,4 @@
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
@@ -7,7 +7,7 @@ namespace ET
         public struct ChangePosition
         {
             public Unit Unit;
-            public Vector3 OldPos;
+            public float3 OldPos;
         }
 
         public struct ChangeRotation

+ 2 - 1
Unity/Assets/Scripts/Codes/Model/Unity.Model.Codes.asmdef

@@ -4,7 +4,8 @@
     "references": [
         "Unity.Mono",
         "Unity.ThirdParty",
-        "Unity.Core"
+        "Unity.Core",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 1
Unity/Assets/Scripts/Codes/ModelView/Unity.ModelView.Codes.asmdef

@@ -5,7 +5,8 @@
         "Unity.Mono",
         "Unity.ThirdParty",
         "Unity.Core",
-        "Unity.Model.Codes"
+        "Unity.Model.Codes",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 1 - 2
Unity/Assets/Scripts/Core/Module/Network/NetServices.cs

@@ -309,8 +309,7 @@ namespace ET
             while (count-- > 0)
             {
                 int serviceId = this.queue.Dequeue();
-                AService service = this.services[serviceId];
-                if (service == null)
+                if (!this.services.TryGetValue(serviceId, out AService service))
                 {
                     continue;
                 }

+ 4 - 4
Unity/Assets/Scripts/Core/Mongo/MongoRegister.cs

@@ -2,7 +2,7 @@
 using System.Collections.Generic;
 using MongoDB.Bson.Serialization;
 using MongoDB.Bson.Serialization.Conventions;
-using UnityEngine;
+using Unity.Mathematics;
 
 namespace ET
 {
@@ -20,9 +20,9 @@ namespace ET
 
             ConventionRegistry.Register("IgnoreExtraElements", conventionPack, type => true);
 
-            BsonSerializer.RegisterSerializer(typeof(Vector3), new StructBsonSerialize<Vector3>());
-            BsonSerializer.RegisterSerializer(typeof(Vector4), new StructBsonSerialize<Vector4>());
-            BsonSerializer.RegisterSerializer(typeof(Quaternion), new StructBsonSerialize<Quaternion>());
+            BsonSerializer.RegisterSerializer(typeof(float3), new StructBsonSerialize<float3>());
+            BsonSerializer.RegisterSerializer(typeof(float4), new StructBsonSerialize<float4>());
+            BsonSerializer.RegisterSerializer(typeof(quaternion), new StructBsonSerialize<quaternion>());
 
             Dictionary<string, Type> types = EventSystem.Instance.GetTypes();
             foreach (Type type in types.Values)

+ 2 - 1
Unity/Assets/Scripts/Core/Unity.Core.asmdef

@@ -2,7 +2,8 @@
     "name": "Unity.Core",
     "rootNamespace": "ET",
     "references": [
-        "Unity.ThirdParty"
+        "Unity.ThirdParty",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [],
     "excludePlatforms": [],

+ 2 - 1
Unity/Assets/Scripts/Empty/Hotfix/Unity.Hotfix.asmdef

@@ -5,7 +5,8 @@
         "Unity.Model",
         "Unity.ThirdParty",
         "Unity.Mono",
-        "Unity.Core"
+        "Unity.Core",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 1
Unity/Assets/Scripts/Empty/HotfixView/Unity.HotfixView.asmdef

@@ -7,7 +7,8 @@
         "Unity.Model",
         "Unity.Hotfix",
         "Unity.ModelView",
-        "Unity.Core"
+        "Unity.Core",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 1
Unity/Assets/Scripts/Empty/Model/Unity.Model.asmdef

@@ -4,7 +4,8 @@
     "references": [
         "Unity.ThirdParty",
         "Unity.Mono",
-        "Unity.Core"
+        "Unity.Core",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"

+ 2 - 1
Unity/Assets/Scripts/Empty/ModelView/Unity.ModelView.asmdef

@@ -5,7 +5,8 @@
         "Unity.Model",
         "Unity.Mono",
         "Unity.ThirdParty",
-        "Unity.Core"
+        "Unity.Core",
+        "Unity.Mathematics"
     ],
     "includePlatforms": [
         "Editor"