PDA

Просмотр полной версии : [Информация] [C++] Векторный NoSpread


soul8320
19.05.2014, 10:07
void CNoSpread::GetSpreadXY( UINT seed, Vector& vec )
{
int iSeed = seed & 255;
iSeed++;
RandomSeed( iSeed );

vec.x = RandomFloat( -0.5, 0.5 ) + RandomFloat( -0.5, 0.5 );
vec.y = RandomFloat( -0.5, 0.5 ) + RandomFloat( -0.5, 0.5 );
vec.z = vec.x * vec.x + vec.y * vec.y;

vec *= GetVecSpread( ); // m_flSpread of FX_FireBullets
}

void CNoSpread::GetSpreadFix( UINT seed, QAngle& vIn, QAngle& vOut )
{
Vector forward, right, up, vecDir;
Vector view, spread;
QAngle dest;
AngleVectors( vIn, &forward, &right, &up );
GetSpreadXY( seed, spread );

vecDir.x = forward.x + spread.x * right.x + spread.y * up.x;
view.x = 8192.0f * vecDir.x;

vecDir.y = forward.y + spread.x * right.y + spread.y * up.y;
view.y = 8192.0f * vecDir.y;

vecDir.z = forward.z + spread.x * right.z + spread.y * up.z;
view.z = 8192.0f * vecDir.z;

VectorAngles( view, dest );
vOut.x = vIn.x - dest.x;
vOut.y = vIn.y - dest.y;
}



/