fSpread[0] = UTIL_SharedRandomFloat ( ( uiRandomSeed + 1 ), -0.5, 0.5 ) + UTIL_SharedRandomFloat ( ( uiRandomSeed + 2 ), -0.5, 0.5 ); fSpread[1] = UTIL_SharedRandomFloat ( ( uiRandomSeed + 3 ), -0.5, 0.5 ) + UTIL_SharedRandomFloat ( ( uiRandomSeed + 4 ), -0.5, 0.5 ); fSpreadCone = fGetSpread ( fSpeed ); fSpread[0] *= fSpreadCone; fSpread[1] *= fSpreadCone; AngleVectors ( viewangles, fForward, fRight, fUp ); fSpreadDir[0] = fForward[0] + ( fRight[0] * fSpread[0] ) + ( fUp[0] * fSpread[1] ); fSpreadDir[1] = fForward[1] + ( fRight[1] * fSpread[0] ) + ( fUp[1] * fSpread[1] ); fSpreadDir[2] = fForward[2] + ( fRight[2] * fSpread[0] ) + ( fUp[2] * fSpread[1] ); VectorNormalize ( fSpreadDir ); VectorAngles ( fSpreadDir, fNewAngles ); VectorCopy ( viewangles, fStoredAngles ); fUpAngle = 0; fRightAngle = 0; bFound = false; VectorCopy ( viewangles, flSpreadAngles ); fSmallest = 10000; flLength = 1; for ( iIterator = 0; iIterator < 10000; iIterator++ ) { fStoredAngles[0] += fNewAngles[0]; fStoredAngles[1] += fNewAngles[1]; fStoredAngles[2] = 0; AngleNormalize ( fStoredAngles ); AngleVectors ( fStoredAngles, fForward, fRight, fUp ); fSpreadDir[0] = fForward[0] + ( fRight[0] * fSpread[0] ) + ( fUp[0] * fSpread[1] ); fSpreadDir[1] = fForward[1] + ( fRight[1] * fSpread[0] ) + ( fUp[1] * fSpread[1] ); fSpreadDir[2] = fForward[2] + ( fRight[2] * fSpread[0] ) + ( fUp[2] * fSpread[1] ); VectorNormalize ( fSpreadDir ); AngleVectors ( viewangles, fForward, fRight, fUp ); fForwardAngle = AngleBetweenVectors ( fSpreadDir, fForward ); fRightAngle = AngleBetweenVectors ( fSpreadDir, fRight ); fUpAngle = AngleBetweenVectors ( fSpreadDir, fUp ); fCurrent = fForwardAngle; if ( fSmallest == 10000 ) { fSmallest = fCurrent; } if ( fForwardAngle <= 1e-7 && fRightAngle >= 90 && fUpAngle >= 90 ) // adjust these values as necessary { VectorCopy ( fStoredAngles, viewangles ); VectorCopy ( fStoredAngles, flSpreadAngles ); bFound = true; break; } if ( fCurrent <= fSmallest ) { fSmallest = fCurrent; VectorCopy ( fStoredAngles, fBestAngles ); } fNewAngles[0] = 90 - fUpAngle; fNewAngles[1] = 90 - fRightAngle; fNewAngles[2] = 0; } if ( bFound == false ) { VectorCopy ( fBestAngles, viewangles ); VectorCopy ( fBestAngles, fSpreadAngles ); }
Announcement
Collapse
No announcement yet.
Iterative NoSpread
Collapse
X
-
Iterative NoSpread
THIS MAY NOT APPEAR ELSEWHERE WITHOUT MY PERMISSION, BUT MAY BE LINKED TO. ANY TRACE OF THIS IN SOLD HACKS IS CONSIDERED FAIR GAME AND SUBJECT TO CRACKING UNLESS I AM DULY COMPENSATED.
Code:Tags: None
Comment