public bool AddCollisionObject(BCollisionObject co)
        {
            if (co is BRigidBody)
            {
                return(AddRigidBody((BRigidBody)co));
            }

            if (co is BSoftBody)
            {
                return(AddSoftBody((BSoftBody)co));
            }

            if (!_isDisposed)
            {
                if (debugType >= BDebug.DebugType.Debug)
                {
                    Debug.LogFormat("Adding collision object {0} to world", co);
                }

                if (co._BuildCollisionObject())
                {
                    m_world.AddCollisionObject(co.GetCollisionObject(), co.groupsIBelongTo, co.collisionMask);
                    co.isInWorld = true;

                    if (ghostPairCallback == null && co is BGhostObject && world is DynamicsWorld)
                    {
                        ghostPairCallback = new GhostPairCallback();
                        ((DynamicsWorld)world).PairCache.SetInternalGhostPairCallback(ghostPairCallback);
                    }

                    if (co is BCharacterController && world is DynamicsWorld)
                    {
                        AddAction(((BCharacterController)co).GetKinematicCharacterController());
                    }
                }

                return(true);
            }

            return(false);
        }
Ejemplo n.º 2
0
 public void RegisterCollisionCallbackListener(BCollisionObject.BICollisionCallbackEventHandler toBeAdded)
 {
     if (lateUpdateHelper != null) lateUpdateHelper.RegisterCollisionCallbackListener(toBeAdded);
 }
Ejemplo n.º 3
0
 public void RegisterCollisionCallbackListener(BCollisionObject.BICollisionCallbackEventHandler toBeAdded)
 {
     collisionCallbackListeners.Add(toBeAdded);
 }
Ejemplo n.º 4
0
 public bool AddCollisionObject(BCollisionObject co)
 {
     if (!_isDisposed)
     {
         if (debugType >= BDebug.DebugType.Debug) Debug.LogFormat("Adding collision object {0} to world", co);
         if (co._BuildCollisionObject())
         {
             m_world.AddCollisionObject(co.GetCollisionObject(), co.groupsIBelongTo, co.collisionMask);
             co.isInWorld = true;
             if (ghostPairCallback == null && co is BGhostObject && world is DynamicsWorld)
             {
                 ghostPairCallback = new GhostPairCallback();
                 ((DynamicsWorld)world).PairCache.SetInternalGhostPairCallback(ghostPairCallback);
             }
             if (co is BCharacterController && world is DynamicsWorld)
             {
                 AddAction(((BCharacterController)co).GetKinematicCharacterController());
             }
         }
         return true;
     }
     return false;
 }
Ejemplo n.º 5
0
 public void DeregisterCollisionCallbackListener(BCollisionObject.BICollisionCallbackEventHandler toBeRemoved)
 {
     collisionCallbackListeners.Remove(toBeRemoved);
 }
 public void RegisterCollisionCallbackListener(BCollisionObject.BICollisionCallbackEventHandler toBeAdded)
 {
     if (m_collisionEventHandler != null) m_collisionEventHandler.RegisterCollisionCallbackListener(toBeAdded);
 }
 public void DeregisterCollisionCallbackListener(BCollisionObject.BICollisionCallbackEventHandler toBeRemoved)
 {
     if (m_collisionEventHandler != null) m_collisionEventHandler.DeregisterCollisionCallbackListener(toBeRemoved);
 }