public static bool CheckAgainst(IPhysicsObject geom, IEnumerable <Collider> colliders, int layerMask = Physics.AllLayers, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { return(false); } if (colliders == null) { return(false); } using (var set = TempCollection.GetSet <Collider>()) { if (geom.Overlap(set, layerMask, query) > 0) { var e = LightEnumerator.Create <Collider>(colliders); while (e.MoveNext()) { if (set.Contains(e.Current)) { return(true); } } } } return(false); }
public static int OverlapIgnoring(IPhysicsObject geom, ICollection <Collider> results, IEnumerable <Collider> ignoredColliders, int layerMask = Physics.AllLayers, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (results == null) { throw new System.ArgumentNullException("results"); } if (geom == null) { return(0); } int cnt = 0; using (var set = TempCollection.GetSet <Collider>()) { if (geom.Overlap(set, layerMask, query) > 0) { var e = set.GetEnumerator(); while (e.MoveNext()) { if (!ignoredColliders.Contains(e.Current)) { cnt++; results.Add(e.Current); } } } } return(cnt); }
public static int OverlapGeom(IPhysicsObject geom, IList <Collider> results, int layerMask = Physics.AllLayers, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { throw new System.ArgumentNullException("geom"); } return(geom.Overlap(results, layerMask, query)); }
public static Collider[] OverlapGeom(IPhysicsObject geom, int layerMask = Physics.AllLayers, QueryTriggerInteraction query = QueryTriggerInteraction.UseGlobal) { if (geom == null) { throw new System.ArgumentNullException("geom"); } using (var lst = TempCollection.GetList <Collider>()) { geom.Overlap(lst, layerMask, query); return(lst.ToArray()); } }