protected static void Disconnect(CollisionHolder2D obj1, CollisionTarget2D obj2)
 {
     if (obj1.connection.Contains(obj2) && obj2.connection.Contains(obj1))
     {
         obj1.connection.Remove(obj2);
         obj2.connection.Remove(obj1);
         if (obj1.connection.Count == 0)
         {
             SimulationManager.Instance.RemoveCollisionObject(obj1);
         }
         if (obj2.connection.Count == 0)
         {
             SimulationManager.Instance.RemoveCollisionObject(obj2);
         }
         if (SimulationManager.Instance.IsDebugOn)
         {
             Debug.Log(obj1.name + " try to disconnect with " + obj2.name);
         }
     }
 }
 public void RemoveCollisionObject(CollisionHolder2D obj)
 {
     bpProcessor.RemoveObject(obj);
 }
        CollisionProcessor npProcessor = new CollisionProcessor();           //narrow phase processor

        //generic add and remove
        public void AddCollisionObject(CollisionHolder2D obj)
        {
            bpProcessor.AddObject(obj);
        }