Ejemplo n.º 1
0
    //-----------------------------------------------------------------------
    //                            p r e S t e p
    //-----------------------------------------------------------------------
    void TKinematicCharacterTest::preStep (  btCollisionWorld* collisionWorld)
    {
        int numPenetrationLoops = 0;
        m_touchingContact = false;

        
        while (recoverFromPenetration (collisionWorld))
        {
            numPenetrationLoops++;
            m_touchingContact = true;
            if (numPenetrationLoops > 4)
            {
                //			printf("character could not recover from penetration = %d\n", numPenetrationLoops);
                break;
            }
        }
        
        m_currentPosition = m_ghostObject->getWorldTransform().getOrigin();
        m_targetPosition = m_currentPosition;
        //	printf("m_targetPosition=%f,%f,%f\n",m_targetPosition[0],m_targetPosition[1],m_targetPosition[2]);
    }
void btKinematicCharacterController::preStep( btCollisionWorld* collisionWorld )
{
    BT_PROFILE( "preStep" );

    for( int i = 0; i < 4 && recoverFromPenetration ( collisionWorld ); i++ );
}