|
Geschrieben von: SkyMaster1980
|
|
Dienstag, den 18. Oktober 2011 um 00:00 Uhr |
D3DXVECTOR3 vecDistance = TargetPosition - pRHBF.UseLocalViewOrigin( );
vecDistance /= pRHBF.GetDistanceByID( PID );
FLOAT reduceSpeed = pMenu.Items[MenuEnums::LimitAimSpeed]->Value;
FLOAT maxChange = 2000;
FLOAT ShakeX = D3DXToDegree( asinf( D3DXVec3Dot( &pRHBF.UseLocalViewX( ), &vecDistance ) ) );
FLOAT ShakeY = D3DXToDegree( -asinf( D3DXVec3Dot( &pRHBF.UseLocalViewY( ), &vecDistance ) ) );
if(reduceSpeed) maxChange = D3DXToRadian(1.67f / (reduceSpeed/8.f));
if( ShakeX > 0) {
if( ShakeX > maxChange) ShakeX = maxChange;
}
else if( ShakeX < 0) {
if( ShakeX < -maxChange) ShakeX = -maxChange;
}
if( ShakeY > 0) {
if( ShakeY > maxChange) ShakeY = maxChange;
}
else if( ShakeY < 0) {
if( ShakeY < -maxChange) ShakeY = -maxChange;
}
D3DXMATRIX temp;
D3DXMatrixRotationYawPitchRoll( &temp, D3DXToRadian( ShakeX ), D3DXToRadian( ShakeY ), 0.0f );
// D3DXMatrixRotationYawPitchRoll( &AimAntiShake, D3DXToRadian( ShakeX ), D3DXToRadian( ShakeY ), 0.0f );
D3DXMatrixMultiply( &AimAntiShake, &temp, &LocalPlayer->GetPlayerView( )->matrix );
// AimAntiShake._41 = LocalPlayer->GetPlayerView( )->matrix._41;
// AimAntiShake._42 = LocalPlayer->GetPlayerView( )->matrix._42;
// AimAntiShake._43 = LocalPlayer->GetPlayerView( )->matrix._43;
bAppliedNoSpread = FALSE;
if( pMenu.Items[MenuEnums::NoSpread]->Value &&
!pRHBF.GetInVehicleByID( PID ) &&
( pRHBF.UseLocalSoldier( )->soldier_selected_weapon == 2 || pRHBF.UseLocalSoldier( )->soldier_selected_weapon == 3 ) )
{
CompensateDeviation( &vecDistance );
bAppliedNoSpread = TRUE;
}
|
|
Zuletzt aktualisiert am Samstag, den 29. Oktober 2011 um 11:10 Uhr |