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; } } }); }
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); } }
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); }
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; }
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; } }
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); } } }
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); }