Exemple #1
0
 private void UpdateContacts(ArbiterMap selectedArbiterMap)
 {
     foreach (Arbiter current in selectedArbiterMap.Arbiters)
     {
         this.UpdateArbiterContacts(current);
     }
     while (this.removedArbiterStack.Count > 0)
     {
         Arbiter arbiter = this.removedArbiterStack.Pop();
         Arbiter.Pool.GiveBack(arbiter);
         selectedArbiterMap.Remove(arbiter);
         bool flag = selectedArbiterMap == this.arbiterMap;
         if (flag)
         {
             this.removedArbiterQueue.Enqueue(arbiter);
             this.events.RaiseBodiesEndCollide(arbiter.body1, arbiter.body2);
             this.cacheOverPairContact.SetBodies(arbiter.body1, arbiter.body2);
             this.initialCollisions.Remove(this.cacheOverPairContact);
         }
         else
         {
             bool isColliderOnly = arbiter.body1.isColliderOnly;
             if (isColliderOnly)
             {
                 this.events.RaiseTriggerEndCollide(arbiter.body1, arbiter.body2);
             }
             else
             {
                 this.events.RaiseTriggerEndCollide(arbiter.body2, arbiter.body1);
             }
             this.cacheOverPairContact.SetBodies(arbiter.body1, arbiter.body2);
             this.initialTriggers.Remove(this.cacheOverPairContact);
         }
     }
 }