using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

namespace MoreMountains.Tools
{
	/// <summary>
	/// Vector2 extensions
	/// </summary>
	public static class MMVector2Extensions
	{
		/// <summary>
		/// Rotates a vector2 by angleInDegrees
		/// </summary>
		/// <param name="vector"></param>
		/// <param name="angleInDegrees"></param>
		/// <returns></returns>
		public static Vector2 MMRotate(this Vector2 vector, float angleInDegrees)
		{
			float sin = Mathf.Sin(angleInDegrees * Mathf.Deg2Rad);
			float cos = Mathf.Cos(angleInDegrees * Mathf.Deg2Rad);
			float tx = vector.x;
			float ty = vector.y;
			vector.x = (cos * tx) - (sin * ty);
			vector.y = (sin * tx) + (cos * ty);
			return vector;
		}

		/// <summary>
		/// Sets the X part of a Vector2
		/// </summary>
		/// <param name="vector"></param>
		/// <param name="newValue"></param>
		/// <returns></returns>
		public static Vector2 MMSetX(this Vector2 vector, float newValue)
		{
			vector.x = newValue;
			return vector;
		}

		/// <summary>
		/// Sets the Y part of a Vector2
		/// </summary>
		/// <param name="vector"></param>
		/// <param name="newValue"></param>
		/// <returns></returns>
		public static Vector2 MMSetY(this Vector2 vector, float newValue)
		{
			vector.y = newValue;
			return vector;
		}
	}
}