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);
        }
Пример #2
0
        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());
            }
        }