aboutsummaryrefslogtreecommitdiff
path: root/JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-02-18 14:38:20 +0800
committerchai <chaifix@163.com>2022-02-18 14:38:20 +0800
commit63795c45af9ecca5aea36fbe291b18fcd9fb9b7d (patch)
tree60d811d8a0b1944ab32d24aa28394183b82cadeb /JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs
parenta41c8da0787e0285d4c5b16a5cf5bc3e7a34f521 (diff)
*rename folder name
Diffstat (limited to 'JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs')
-rw-r--r--JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs59
1 files changed, 0 insertions, 59 deletions
diff --git a/JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs b/JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs
deleted file mode 100644
index 3efe155..0000000
--- a/JamHelper/Assets/JamTools/Scripts/Utils/ColliderUtility.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace JamTools
-{
-
- public static class ColliderUtility
- {
- private static readonly List<Vector3> s_Vertices = new List<Vector3>();
-
- private static readonly List<int> s_Triangles = new List<int>();
-
- private static Plane GetWorldTriangle(Transform collider, int index)
- {
- Vector3 position = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index]];
- Vector3 position2 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 1]];
- Vector3 position3 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 2]];
- return new Plane(collider.TransformPoint(position), collider.TransformPoint(position2), collider.TransformPoint(position3));
- }
-
- public static Vector3 FindClosestPoint(Collider collider, Vector3 position)
- {
- return ColliderUtility.FindClosestPoint(collider, position, false);
- }
-
- public static Vector3 FindClosestPoint(Collider collider, Vector3 position, bool ignoreVerticalTriangles)
- {
- MeshCollider meshCollider;
- if ((meshCollider = (collider as MeshCollider)) != null && !meshCollider.convex)
- {
- Mesh sharedMesh = meshCollider.sharedMesh;
- sharedMesh.GetVertices(ColliderUtility.s_Vertices);
- Plane plane = default(Plane);
- float num = float.PositiveInfinity;
- for (int i = 0; i < sharedMesh.subMeshCount; i++)
- {
- sharedMesh.GetTriangles(ColliderUtility.s_Triangles, i);
- int j = 0;
- int num2 = ColliderUtility.s_Triangles.Count / 3;
- while (j < num2)
- {
- Plane worldTriangle = ColliderUtility.GetWorldTriangle(meshCollider.transform, j);
- float num3 = Mathf.Abs(worldTriangle.GetDistanceToPoint(position));
- if ((!ignoreVerticalTriangles || (!(worldTriangle.normal == Vector3.up) && !(worldTriangle.normal == Vector3.down))) && ((i == 0 && j == 0) || num3 < num))
- {
- plane = worldTriangle;
- num = num3;
- }
- j++;
- }
- }
- return plane.ClosestPointOnPlane(position);
- }
- return collider.ClosestPoint(position);
- }
- }
-
-}