Пример #1
0
 /// <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);
     }
 }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        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);
                }
            }
        }