| 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() {}
 
- 	}
 
- }
 
 
  |