Example #1
0
        void MyPreSolve(Fixture fixtureA, Fixture fixtureB, Contact contact)
        {
            if (fixtureA.Equals(m_platform))
            {
                contact.SetTangentSpeed(5.0f);
            }

            if (fixtureB.Equals(m_platform))
            {
                contact.SetTangentSpeed(-5.0f);
            }
        }
Example #2
0
 public void InsertFixture(Fixture fixture, bool overwrite = false)
 {
     if(overwrite && _fixtures.Contains(fixture)) {
         if(fixture.Equals(_fixtures.First)) {
             _fixtures.Remove(fixture);
             _fixtures.AddFirst(fixture);
         } else {
             LinkedListNode<Fixture> prior = _fixtures.Find(fixture);
             _fixtures.Remove(fixture);
             _fixtures.AddAfter(prior, fixture);
         }
     } else {
         _fixtures.AddLast(fixture);
     }
 }
Example #3
0
        public bool OnCollision(Fixture fixtureA, Fixture fixtureB, FarseerPhysics.Dynamics.Contacts.Contact contact)
        {
            int indexA = -1, indexB = -1;

            for (int i = 0; i < blockList.Count; i++)
            {
                for (int j = 0; j < blockList.ElementAt(i).body.FixtureList.Count; j++)
                {
                    if (fixtureA.Equals(blockList.ElementAt(i).body.FixtureList.ElementAt(j)))
                    {
                        indexA = i;
                    }
                    if (fixtureB.Equals(blockList.ElementAt(i).body.FixtureList.ElementAt(j)))
                    {
                        indexB = i;
                    }
                }
            }

            if (indexA >= 0 && indexB >= 0)
            {
                if (blockList.ElementAt(indexA).colorNum > 0 && blockList.ElementAt(indexA).colorNum == blockList.ElementAt(indexB).colorNum)
                {
                    if (indexA > indexB)
                    {
                        world.RemoveBody(blockList.ElementAt(indexA).body);
                        blockList.RemoveAt(indexA);
                        world.RemoveBody(blockList.ElementAt(indexB).body);
                        blockList.RemoveAt(indexB);
                    }
                    else
                    {
                        world.RemoveBody(blockList.ElementAt(indexB).body);
                        blockList.RemoveAt(indexB);
                        world.RemoveBody(blockList.ElementAt(indexA).body);
                        blockList.RemoveAt(indexA);
                    }
                }
            }
            return(true);
        }