Ejemplo n.º 1
0
 public override void Collide(ref Vector3 position, float spacing)
 {
     if (referenceCollider is SphereCollider)
     {
         SphereCollider collider = referenceCollider as SphereCollider;
         if (insideMode)
         {
             EZPhysicsBoneUtility.PointInsideSphere(ref position, collider, spacing + margin);
         }
         else
         {
             EZPhysicsBoneUtility.PointOutsideSphere(ref position, collider, spacing + margin);
         }
     }
     else if (referenceCollider is CapsuleCollider)
     {
         CapsuleCollider collider = referenceCollider as CapsuleCollider;
         if (insideMode)
         {
             EZPhysicsBoneUtility.PointInsideCapsule(ref position, collider, spacing + margin);
         }
         else
         {
             EZPhysicsBoneUtility.PointOutsideCapsule(ref position, collider, spacing + margin);
         }
     }
     else if (referenceCollider is BoxCollider)
     {
         BoxCollider collider = referenceCollider as BoxCollider;
         if (insideMode)
         {
             EZPhysicsBoneUtility.PointInsideBox(ref position, collider, spacing + margin);
         }
         else
         {
             EZPhysicsBoneUtility.PointOutsideBox(ref position, collider, spacing + margin);
         }
     }
     else if (referenceCollider is MeshCollider)
     {
         if (!CheckConvex(referenceCollider as MeshCollider))
         {
             Debug.LogError("Non-Convex Mesh Collider is not supported", this);
             enabled = false;
             return;
         }
         if (insideMode)
         {
             Debug.LogError("Inside Mode On Mesh Collider is not supported", this);
             insideMode = false;
             return;
         }
         EZPhysicsBoneUtility.PointOutsideCollider(ref position, referenceCollider, spacing + margin);
     }
 }