Пример #1
0
//-----------------------------------------------------------------------------
// 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;
		}
	}
Пример #2
0
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( );
	}
}