Example #1
0
        private static void PurgeWhenCan(IIgnorableCollision a, IIgnorableCollision b)
        {
            GameLoopEntry.UpdatePump.BeginInvoke(() =>
            {
                var token = new PairToken(a, b);
                if (token.IsDead)
                {
                    _table.Remove(token);
                    return;
                }

                int cnt;
                if (_table.TryGetValue(token, out cnt))
                {
                    cnt--;
                    if (cnt <= 0)
                    {
                        a.IgnoreCollision(b, false);
                        _table.Remove(token);
                    }
                    else
                    {
                        _table[token] = cnt;
                    }
                }
            });
        }
Example #2
0
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (_collider == null || coll == null || object.ReferenceEquals(this, coll))
            {
                return;
            }

            coll.IgnoreCollision(_collider, ignore);
        }
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (coll == null) return;
            if (_colliders == null) return;

            for(int i = 0; i < _colliders.Length; i++)
            {
                if (_colliders[i] != null) coll.IgnoreCollision(_colliders[i], ignore);
            }
        }
Example #4
0
        public CollisionExclusion(IIgnorableCollision a, Collider b)
        {
            if (a == null)
            {
                throw new System.ArgumentNullException("a");
            }
            if (b == null)
            {
                throw new System.ArgumentNullException("b");
            }

            _collA = a;
            _collB = IgnorableCollider.GetIgnorableCollision(b);
        }
Example #5
0
        public CollisionExclusion(Collider a, IIgnorableCollision b)
        {
            if (a == null)
            {
                throw new System.ArgumentNullException("a");
            }
            if (b == null)
            {
                throw new System.ArgumentNullException("b");
            }

            _collA = IgnorableCollider.GetIgnorableCollision(a);
            _collB = b;
        }
Example #6
0
        public virtual void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (coll == null)
            {
                return;
            }

            using (var lst = TempCollection.GetList <Collider>())
            {
                this.GetComponentsInChildren <Collider>(false, lst);
                for (int i = 0; i < lst.Count; i++)
                {
                    coll.IgnoreCollision(lst[i], ignore);
                }
            }
        }
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            switch (_mode)
            {
            case UpdateMode.Motor:
            case UpdateMode.MovementControllerOnly:
                _controller.IgnoreCollision(coll, ignore);
                break;

            case UpdateMode.CharacterController:
                coll.IgnoreCollision(_charController, ignore);
                break;

            case UpdateMode.DumbRigidbody:
                IgnorableRigidbody.GetIgnorableCollision(_rigidbody).IgnoreCollision(coll, ignore);
                break;
            }
        }
Example #8
0
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (coll == null)
            {
                return;
            }
            if (_colliders == null)
            {
                return;
            }

            for (int i = 0; i < _colliders.Length; i++)
            {
                if (_colliders[i] != null)
                {
                    coll.IgnoreCollision(_colliders[i], ignore);
                }
            }
        }
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (_joints == null || _joints.Length == 0)
            {
                return;
            }
            if (coll == null)
            {
                return;
            }

            Collider jc;

            foreach (var j in _joints)
            {
                jc = j.GetComponent <Collider>();
                if (jc.IsActiveAndEnabled())
                {
                    coll.IgnoreCollision(jc, ignore);
                }
            }
        }
Example #10
0
 public PairToken(IIgnorableCollision a, IIgnorableCollision b)
 {
     CollA = a;
     CollB = b;
 }
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (_collider == null || coll == null || this == coll) return;

            coll.IgnoreCollision(_collider, ignore);
        }
        public void IgnoreCollision(IIgnorableCollision coll, bool ignore)
        {
            if (_collider == null || coll == null || object.ReferenceEquals(this, coll)) return;

            coll.IgnoreCollision(_collider, ignore);
        }