using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; namespace MoreMountains.Tools { /// <summary> /// Vector3 Extensions /// </summary> public static class MMVector3Extensions { /// <summary> /// Sets the x value of a vector /// </summary> /// <param name="vector"></param> /// <param name="newValue"></param> /// <returns></returns> public static Vector3 MMSetX(this Vector3 vector, float newValue) { vector.x = newValue; return vector; } /// <summary> /// Sets the y value of a vector /// </summary> /// <param name="vector"></param> /// <param name="newValue"></param> /// <returns></returns> public static Vector3 MMSetY(this Vector3 vector, float newValue) { vector.y = newValue; return vector; } /// <summary> /// Sets the z value of a vector /// </summary> /// <param name="vector"></param> /// <param name="newValue"></param> /// <returns></returns> public static Vector3 MMSetZ(this Vector3 vector, float newValue) { vector.z = newValue; return vector; } /// <summary> /// Inverts a vector /// </summary> /// <param name="newValue"></param> /// <returns></returns> public static Vector3 MMInvert(this Vector3 newValue) { return new Vector3 ( 1.0f / newValue.x, 1.0f / newValue.y, 1.0f / newValue.z ); } /// <summary> /// Projects a vector on another /// </summary> /// <param name="vector"></param> /// <param name="projectedVector"></param> /// <returns></returns> public static Vector3 MMProject(this Vector3 vector, Vector3 projectedVector) { float _dot = Vector3.Dot(vector, projectedVector); return _dot * projectedVector; } /// <summary> /// Rejects a vector on another /// </summary> /// <param name="vector"></param> /// <param name="rejectedVector"></param> /// <returns></returns> public static Vector3 MMReject(this Vector3 vector, Vector3 rejectedVector) { return vector - vector.MMProject(rejectedVector); } /// <summary> /// Rounds all components of a vector /// </summary> /// <param name="vector"></param> /// <returns></returns> public static Vector3 MMRound(this Vector3 vector) { vector.x = Mathf.Round(vector.x); vector.y = Mathf.Round(vector.y); vector.z = Mathf.Round(vector.z); return vector; } } }