/// <summary> /// Pairs of objects that require narrow phase testing. /// </summary> /// <returns></returns> public void CalculateCollisionPairs() { GridCell cell; BroadphaseProxy proxyA, proxyB; _pairs.ClearCache(); CollisionGlobals.ProxiesInCells = 0; for (int i = 0; i < _cells.Length; i++) { CollisionGlobals.ProxiesInCells += _cells[i].Proxies.Count; for (int n = 4; n < neighbourOffset.Length; n++) { int ii = neighbourOffset[n] + i; if (ii < 0 || ii > _cells.Length - 1) { continue; } cell = _cells[ii]; for (int j = 0; j < cell.Proxies.Count; j++) { proxyA = cell.Proxies[j]; for (int k = j + 1; k < cell.Proxies.Count; k++) { proxyB = cell.Proxies[k]; if (AABB.TestOverlap(ref proxyA.AABB, ref proxyB.AABB)) { _pairs.AddOverlappingPair(proxyA, proxyB); } } } } } }
public void CalculateCollisionPairs() { _pairs.ClearCache(); for (int i = 0; i < _proxies.Count; i++) { BroadphaseProxy proxyA = _proxies[i]; for (int j = i + 1; j < _proxies.Count; j++) { BroadphaseProxy proxyB = _proxies[j]; if (AABB.TestOverlap(ref proxyA.AABB, ref proxyB.AABB)) { _pairs.AddOverlappingPair(proxyA, proxyB); } } } }