|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|