| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using UnityEngine;namespace HQFPSWeapons{	public class MATH_UTILS 	{		public static Vector3[] GetArchVertices(Vector3 startDirection, Vector3 endDirection, float radius, int vertexCount, Transform relativeTo = null)		{			startDirection.Normalize();			endDirection.Normalize();			vertexCount = Mathf.Clamp(vertexCount, 3, 100);			Vector3[] vertices = new Vector3[vertexCount];			float deltaRadians = Vector3.Angle(startDirection, endDirection) * Mathf.Deg2Rad / vertexCount;			for(int i = 0;i < vertexCount;i ++)			{				vertices[i] = Vector3.RotateTowards(startDirection, endDirection, deltaRadians * i, 0f);				if(relativeTo != null)					vertices[i] = relativeTo.TransformVector(vertices[i]);			}			return vertices;		}		public static float GetBezier(float time)		{			time = Mathf.Clamp01(time);			return (time * time) * (3f - 2 * time);		}		public static Vector3 GetNaNSafeVector3(Vector3 vector3)		{			if(float.IsNaN(vector3.x))				vector3.x = 0f;			if(float.IsNaN(vector3.y))				vector3.y = 0f;			if(float.IsNaN(vector3.z))				vector3.z = 0f;			return vector3;		}		private MATH_UTILS() {}	}}
 |