//----------------------------------------------------------------------- // 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++ ); }