/// <summary> /// Reconfigures the pairs for a Collision c /// </summary> /// <param name="c">A collision.</param> public void ReconfigurePairs(Collision c) { //Remove pairs with this collision in it foreach (var pair in _pairs.ToArray().Where(pair => pair.A.Equals(c) || pair.B.Equals(c))) { _pairs.Remove(pair); } //Recalculate pairs with this new collision foreach (var other in _collideables) { if (c.Equals(other)) continue; if (CanObjectsPair(c, other)) { var p = new Pair(c, other); _pairs.Add(p); } } }
public Manifold(Collision a, Collision b) : this() { _pair = new Pair(a, b); }
/// <summary> /// Generates the pairs used for testing collision. /// </summary> public void GeneratePairs() { if (_collideables.Count() <= 1) return; _pairs.Clear(); foreach (var a in _collideables) { foreach (var b in _collideables) { if (a.Equals(b)) continue; if (CanObjectsPair(a, b)) { var p = new Pair(a, b); _pairs.Add(p); } } } }