public ClosestTrianglePoint(Vector3 position, float distance, int triangleIndex, Vector3 sphereOrigin, MeshAABBTree meshTree) { this.position = position; this.distance = distance; this.triangleIndex = triangleIndex; this.sphereOrigin = sphereOrigin; this.meshTree = meshTree; }
public static List <ContactInfo> ClosestPointsOnSurface(Collider collider, Vector3 segment0, Vector3 segment1, float radius, List <ContactInfo> resultsBuffer, bool multipleContacts = true) { resultsBuffer.Clear(); if (collider is MeshCollider) { MeshAABBTree meshTree = collider.GetComponent <MeshAABBTree>(); if (meshTree != null) { if (multipleContacts) { meshTree.ClosestPointsOnSurface(segment0, segment1, radius, resultsBuffer); } else { ContactInfo contact = meshTree.ClosestPointOnSurface(segment0, segment1, radius); if (contact.point != Vector3.zero) { resultsBuffer.Add(contact); } } } } else if (collider is BoxCollider) { resultsBuffer.Add(ClosestPointOnSurface((BoxCollider)collider, segment0, segment1)); } else if (collider is SphereCollider) { resultsBuffer.Add(ClosestPointOnSurface((SphereCollider)collider, segment0, segment1)); } else if (collider is CapsuleCollider) { resultsBuffer.Add(ClosestPointOnSurface((CapsuleCollider)collider, segment0, segment1)); } else if (collider is TerrainCollider) /*Not supported*/ } {