using System.Runtime.CompilerServices; using UnityEngine; namespace VketCloudGUITools.Utilities { public static class VectorUtility { #region Constants public static Vector2 half2D => new Vector2(0.5f, 0.5f); public static Vector3 half3D => new Vector3(0.5f, 0.5f, 0.5f); #endregion #region To Array [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float[] ToArray(this Vector2 v2) { return new float[] { v2.x, v2.y }; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float[] ToArray(this Vector3 v3) { return new float[] { v3.x, v3.y, v3.z }; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int[] ToArray(this Vector2Int v2) { return new int[] { v2.x, v2.y }; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int[] ToArray(this Vector3Int v3) { return new int[] { v3.x, v3.y, v3.z }; } #endregion #region Vetor2 to Vector2Int [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2Int ToVector2Int(this Vector2 v2) { return new Vector2Int((int)v2.x, (int)v2.y); } #endregion #region Vector3 to Vector2 [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2XY(this Vector3 v3) { return new Vector2(v3.x, v3.y); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2XZ(this Vector3 v3) { return new Vector2(v3.x, v3.z); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2YX(this Vector3 v3) { return new Vector2(v3.y, v3.x); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2YZ(this Vector3 v3) { return new Vector2(v3.y, v3.z); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2ZX(this Vector3 v3) { return new Vector2(v3.z, v3.x); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector2 ToVector2ZY(this Vector3 v3) { return new Vector2(v3.z, v3.y); } #endregion #region Vector2 - Set 1 value [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetAt(this Vector2 v, int index, float f) { v[index] = f; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetX(this Vector2 v, int index, float x) { v.x = x; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetY(this Vector2 v, int index, float y) { v.y = y; return v; } #endregion #region Vector3 - Set 1 value [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetAt(this Vector3 v, int index, float x) { v[index] = x; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetX(this Vector3 v, float y) { v.x = y; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetY(this Vector3 v, float z) { v.y = z; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetZ(this Vector3 v, float f) { v.z = f; return v; } #endregion #region Vector3 - Set 2 values [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetXY(this Vector3 v, float x, float y) { v.x = x; v.y = y; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetXZ(this Vector3 v, float x, float z) { v.x = x; v.z = z; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetYZ(this Vector3 v, float y, float z) { v.y = y; v.z = z; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetXY(this Vector3 v, Vector2 xy) { v.x = xy.x; v.y = xy.y; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetXZ(this Vector3 v, Vector2 xz) { v.x = xz.x; v.z = xz.y; return v; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Vector3 SetYZ(this Vector3 v, Vector2 yz) { v.y = yz.y; v.z = yz.y; return v; } #endregion } }