/// <summary> /// Touch each proxy so that new pairs may be created /// </summary> /// <param name="broadPhase"></param> internal void TouchProxies(IBroadPhase broadPhase) { for (int i = 0; i < ProxyCount; ++i) { broadPhase.TouchProxy(Proxies[i].ProxyId); } }
/// <summary> /// Contacts are persistant and will keep being persistant unless they are /// flagged for filtering. /// This methods flags all contacts associated with the body for filtering. /// </summary> internal void Refilter() { // Flag associated contacts for filtering. ContactEdge edge = Body.ContactList; while (edge != null) { Contact contact = edge.Contact; Fixture fixtureA = contact.FixtureA; Fixture fixtureB = contact.FixtureB; if (fixtureA == this || fixtureB == this) { contact.FlagForFiltering(); } edge = edge.Next; } World world = Body.World; if (world == null) { return; } // Touch each proxy so that new pairs may be created IBroadPhase broadPhase = world.ContactManager.BroadPhase; for (int i = 0; i < ProxyCount; ++i) { broadPhase.TouchProxy(Proxies[i].ProxyId); } }
private void Refilter() { for (ContactEdge contactEdge = this.Body.ContactList; contactEdge != null; contactEdge = contactEdge.Next) { Contact contact = contactEdge.Contact; Fixture fixtureA = contact.FixtureA; Fixture fixtureB = contact.FixtureB; bool flag = fixtureA == this || fixtureB == this; if (flag) { contact.FilterFlag = true; } } World world = this.Body._world; bool flag2 = world == null; if (!flag2) { IBroadPhase broadPhase = world.ContactManager.BroadPhase; for (int i = 0; i < this.ProxyCount; i++) { broadPhase.TouchProxy(this.Proxies[i].ProxyId); } } }