Skip to content

Instantly share code, notes, and snippets.

@Xevion

Xevion/Vector2Int.cs

Created Nov 24, 2020
Embed
What would you like to do?
// Decompiled with JetBrains decompiler
// Type: UnityEngine.Vector2Int
// Assembly: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 578B5B67-7E30-45F5-8675-3155BC1864CB
// Assembly location: C:\Program Files\Unity\Hub\Editor\2019.1.1f1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll
using System;
using UnityEngine.Scripting;
namespace UnityEngine
{
[UsedByNativeCode]
public struct Vector2Int : IEquatable<Vector2Int>
{
private int m_X;
private int m_Y;
private static readonly Vector2Int s_Zero = new Vector2Int(0, 0);
private static readonly Vector2Int s_One = new Vector2Int(1, 1);
private static readonly Vector2Int s_Up = new Vector2Int(0, 1);
private static readonly Vector2Int s_Down = new Vector2Int(0, -1);
private static readonly Vector2Int s_Left = new Vector2Int(-1, 0);
private static readonly Vector2Int s_Right = new Vector2Int(1, 0);
public Vector2Int(int x, int y)
{
this.m_X = x;
this.m_Y = y;
}
public int x
{
get => this.m_X;
set => this.m_X = value;
}
public int y
{
get => this.m_Y;
set => this.m_Y = value;
}
public void Set(int x, int y)
{
this.m_X = x;
this.m_Y = y;
}
public int this[int index]
{
get
{
if (index == 0)
return this.x;
if (index == 1)
return this.y;
throw new IndexOutOfRangeException(string.Format("Invalid Vector2Int index addressed: {0}!", (object) index));
}
set
{
if (index != 0)
{
if (index != 1)
throw new IndexOutOfRangeException(string.Format("Invalid Vector2Int index addressed: {0}!", (object) index));
this.y = value;
}
else
this.x = value;
}
}
public float magnitude => Mathf.Sqrt((float) (this.x * this.x + this.y * this.y));
public int sqrMagnitude => this.x * this.x + this.y * this.y;
public static float Distance(Vector2Int a, Vector2Int b)
{
float num1 = (float) (a.x - b.x);
float num2 = (float) (a.y - b.y);
return (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2);
}
public static Vector2Int Min(Vector2Int lhs, Vector2Int rhs) => new Vector2Int(Mathf.Min(lhs.x, rhs.x), Mathf.Min(lhs.y, rhs.y));
public static Vector2Int Max(Vector2Int lhs, Vector2Int rhs) => new Vector2Int(Mathf.Max(lhs.x, rhs.x), Mathf.Max(lhs.y, rhs.y));
public static Vector2Int Scale(Vector2Int a, Vector2Int b) => new Vector2Int(a.x * b.x, a.y * b.y);
public void Scale(Vector2Int scale)
{
this.x *= scale.x;
this.y *= scale.y;
}
public void Clamp(Vector2Int min, Vector2Int max)
{
this.x = Math.Max(min.x, this.x);
this.x = Math.Min(max.x, this.x);
this.y = Math.Max(min.y, this.y);
this.y = Math.Min(max.y, this.y);
}
public static implicit operator Vector2(Vector2Int v) => new Vector2((float) v.x, (float) v.y);
public static explicit operator Vector3Int(Vector2Int v) => new Vector3Int(v.x, v.y, 0);
public static Vector2Int FloorToInt(Vector2 v) => new Vector2Int(Mathf.FloorToInt(v.x), Mathf.FloorToInt(v.y));
public static Vector2Int CeilToInt(Vector2 v) => new Vector2Int(Mathf.CeilToInt(v.x), Mathf.CeilToInt(v.y));
public static Vector2Int RoundToInt(Vector2 v) => new Vector2Int(Mathf.RoundToInt(v.x), Mathf.RoundToInt(v.y));
public static Vector2Int operator +(Vector2Int a, Vector2Int b) => new Vector2Int(a.x + b.x, a.y + b.y);
public static Vector2Int operator -(Vector2Int a, Vector2Int b) => new Vector2Int(a.x - b.x, a.y - b.y);
public static Vector2Int operator *(Vector2Int a, Vector2Int b) => new Vector2Int(a.x * b.x, a.y * b.y);
public static Vector2Int operator *(Vector2Int a, int b) => new Vector2Int(a.x * b, a.y * b);
public static bool operator ==(Vector2Int lhs, Vector2Int rhs) => lhs.x == rhs.x && lhs.y == rhs.y;
public static bool operator !=(Vector2Int lhs, Vector2Int rhs) => !(lhs == rhs);
public override bool Equals(object other) => other is Vector2Int other1 && this.Equals(other1);
public bool Equals(Vector2Int other) => this.x.Equals(other.x) && this.y.Equals(other.y);
public override int GetHashCode() => this.x.GetHashCode() ^ this.y.GetHashCode() << 2;
public override string ToString() => UnityString.Format("({0}, {1})", (object) this.x, (object) this.y);
public static Vector2Int zero => Vector2Int.s_Zero;
public static Vector2Int one => Vector2Int.s_One;
public static Vector2Int up => Vector2Int.s_Up;
public static Vector2Int down => Vector2Int.s_Down;
public static Vector2Int left => Vector2Int.s_Left;
public static Vector2Int right => Vector2Int.s_Right;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment