//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- float CPropJetski::CalculateDrag( CUserCmd *ucmd ) { // Get the speed and ratio to max speed. float flSpeed = m_VehiclePhysics.GetSpeed(); float flMaxSpeed = m_VehiclePhysics.GetMaxSpeed(); float flRatio = flSpeed / flMaxSpeed; float flDrag = 0.0f; bool bLean = UpdateLean( ucmd ); #if 0 if ( bLean ) { flDrag += JETSKI_DRAG_LEAN_ADD; } float flNormalizedRatio = ( flRatio - 0.4f ) * 1.667f; float flSplineRatio = SimpleSpline( flNormalizedRatio ); flFriction = JETSKI_FRICTION_MAX + ( JETSKI_FRICTION_MIN - JETSKI_FRICTION_MAX ) * flSplineRatio; flDrag = JETSKI_DRAG_IN_WATER + ( JETSKI_DRAG_ON_WATER - JETSKI_DRAG_IN_WATER ) * flNormalizedRatio; // Leaning backwards. if ( bLean ) { flDrag += JETSKI_DRAG_LEAN_ADD; } }
void CLeanMgr::Update( ) { if (g_pGameClientShell->IsGamePaused()) return; UpdateControlFlags(); bool bLeft = !!(m_dwControlFlags & BC_CFLG_LEAN_LEFT); bool bRight = !!(m_dwControlFlags & BC_CFLG_LEAN_RIGHT); bool bLastLeft = !!(m_dwLastControlFlags & BC_CFLG_LEAN_LEFT); bool bLastRight = !!(m_dwLastControlFlags & BC_CFLG_LEAN_RIGHT); // Check to see if we should start leaning in a direction... if( bLeft && !bLastLeft ) { BeginLean( kLean_Left ); } else if( !bLeft && bLastLeft ) { EndLean( kLean_Left ); } if( bRight && !bLastRight ) { BeginLean( kLean_Right ); } else if( !bRight && bLastRight ) { EndLean( kLean_Right ); } // Should we snap back to the center or keep leaning... if( !bLeft && !bRight && (m_kLeanDir != kLean_Center) ) { UpdateCenter( ); } else { UpdateLean( ); } }