public: refactor variable declarations

This commit is contained in:
Alibek Omarov
2026-05-19 21:05:09 +05:00
committed by a1batross
parent 4c2302ec6c
commit c5fbc98d16
8 changed files with 149 additions and 201 deletions

View File

@@ -17,15 +17,13 @@ GNU General Public License for more details.
qboolean Atlas_AllocBlock( atlas_t *atlas, int w, int h, int *x, int *y )
{
int i, j;
int best, best2;
int size = atlas->size;
int best = size;
int j;
best = size;
for( i = 0; i <= size - w; )
for( int i = 0; i <= size - w; )
{
best2 = 0;
int best2 = 0;
for( j = 0; j < w; j++ )
{
@@ -52,7 +50,7 @@ qboolean Atlas_AllocBlock( atlas_t *atlas, int w, int h, int *x, int *y )
if( best + h > size )
return false;
for( i = 0; i < w; i++ )
for( int i = 0; i < w; i++ )
atlas->allocated[*x + i] = best + h;
if( best + h > atlas->max_height )

View File

@@ -20,7 +20,7 @@ static const char mond[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int Q_buildnum_iso( const char *date )
{
int y, m, d, b, i;
int y, m, d;
if( sscanf( date, "%d-%d-%d", &y, &m, &d ) != 3 || y <= 1900 || m <= 0 || d <= 0 )
return -1;
@@ -29,11 +29,11 @@ int Q_buildnum_iso( const char *date )
m--;
d--;
for( i = 0; i < m; i++ )
for( int i = 0; i < m; i++ )
d += mond[i];
y -= 1900;
b = d + (int)((y - 1) * 365.25f );
int b = d + (int)((y - 1) * 365.25f );
if((( y % 4 ) == 0 ) && m > 1 )
b += 1;

View File

@@ -97,11 +97,13 @@ void GAME_EXPORT CRC32_ProcessByte( uint32_t *pulCRC, byte ch )
void GAME_EXPORT CRC32_ProcessBuffer( uint32_t *pulCRC, const void *pBuffer, int nBuffer )
{
uint32_t ulCrc = *pulCRC, tmp;
byte *pb = (byte *)pBuffer;
uint32_t ulCrc = *pulCRC;
byte *pb = (byte *)pBuffer;
while( nBuffer >= sizeof( uint64_t ))
{
uint32_t tmp;
memcpy( &tmp, pb, sizeof( tmp ));
ulCrc ^= LittleLong( tmp );
ulCrc = crc32table[(byte)ulCrc] ^ (ulCrc >> 8);
@@ -120,6 +122,8 @@ void GAME_EXPORT CRC32_ProcessBuffer( uint32_t *pulCRC, const void *pBuffer, int
if( nBuffer & sizeof( uint32_t ))
{
uint32_t tmp;
memcpy( &tmp, pb, sizeof( tmp ));
ulCrc ^= LittleLong( tmp );
ulCrc = crc32table[(byte)ulCrc] ^ (ulCrc >> 8);
@@ -147,23 +151,22 @@ For proxy protecting
*/
byte CRC32_BlockSequence( byte *base, int length, int sequence )
{
uint32_t CRC;
char buffer[64];
int off;
uint32_t le[2];
char buffer[64];
if( sequence < 0 ) sequence = abs( sequence );
if( length > 60 ) length = 60;
memcpy( buffer, base, length );
off = sequence % 0x3FC;
int off = sequence % 0x3FC;
uint32_t le[2];
le[0] = LittleLong( crc32table[off / 4] );
le[1] = LittleLong( crc32table[off / 4 + 1] );
memcpy( buffer + length, (char *)le + ( off & 3 ), 4 );
length += 4;
uint32_t CRC;
CRC32_Init( &CRC );
CRC32_ProcessBuffer( &CRC, buffer, length );
CRC = CRC32_Final( CRC );
@@ -188,10 +191,8 @@ Update context to reflect the concatenation of another buffer full of bytes.
*/
void MD5Update( MD5Context_t *ctx, const byte *buf, uint len )
{
uint t;
// update bitcount
t = ctx->bits[0];
uint t = ctx->bits[0];
if(( ctx->bits[0] = t + ((uint) len << 3 )) < t )
ctx->bits[1]++; // carry from low to high
@@ -242,15 +243,12 @@ Final wrapup - pad to 64-byte boundary with the bit pattern
*/
void MD5Final( byte digest[16], MD5Context_t *ctx )
{
uint count;
byte *p;
// compute number of bytes mod 64
count = ( ctx->bits[0] >> 3 ) & 0x3F;
uint count = ( ctx->bits[0] >> 3 ) & 0x3F;
// set the first char of padding to 0x80.
// this is safe since there is always at least one byte free
p = (byte*)ctx->in + count;
byte *p = (byte*)ctx->in + count;
*p++ = 0x80;
// bytes of padding needed to make 64 bytes
@@ -308,12 +306,10 @@ the data and converts bytes into longwords for this routine.
*/
void MD5Transform( uint buf[4], const uint in[16] )
{
register uint a, b, c, d;
a = buf[0];
b = buf[1];
c = buf[2];
d = buf[3];
register uint a = buf[0];
register uint b = buf[1];
register uint c = buf[2];
register uint d = buf[3];
MD5STEP( F1, a, b, c, d, in[0] + 0xd76aa478, 7 );
MD5STEP( F1, d, a, b, c, in[1] + 0xe8c7b756, 12 );
@@ -425,12 +421,11 @@ transform hash to hexadecimal printable symbols
*/
char *MD5_Print( byte hash[16] )
{
static char szReturn[64];
int i;
static char szReturn[64];
memset( szReturn, 0, 64 );
for( i = 0; i < 16; i++ )
for( int i = 0; i < 16; i++ )
COM_Hex2String( hash[i], &szReturn[i * 2] );
return szReturn;

View File

@@ -48,24 +48,22 @@ char *GAME_EXPORT Q_memfgets( byte *data, int data_len, int *data_offset, char *
void Q_strnlwr( const char *in, char *out, size_t size_out )
{
size_t len, i;
size_t len = Q_strncpy( out, in, size_out );
len = Q_strncpy( out, in, size_out );
for( i = 0; i < len; i++ )
for( size_t i = 0; i < len; i++ )
out[i] = Q_tolower( out[i] );
}
int Q_atoi_hex( int sign, const char *str )
{
int c, val = 0;
int val = 0;
if( str[0] == '0' && ( str[1] == 'x' || str[1] == 'X' ))
str += 2;
while( 1 )
{
c = *str++;
int c = *str++;
if( c >= '0' && c <= '9' ) val = (val<<4) + c - '0';
else if( c >= 'a' && c <= 'f' ) val = (val<<4) + c - 'a' + 10;
else if( c >= 'A' && c <= 'F' ) val = (val<<4) + c - 'A' + 10;
@@ -88,9 +86,6 @@ static const char *Q_atoi_strip_whitespace( const char *str )
int Q_atoi( const char *str )
{
int val = 0;
int c, sign;
if( COM_StringEmptyOrNULL( str ))
return 0;
@@ -99,6 +94,7 @@ int Q_atoi( const char *str )
if( COM_StringEmptyOrNULL( str ))
return 0;
int sign;
if( *str == '-' )
{
sign = -1;
@@ -115,9 +111,10 @@ int Q_atoi( const char *str )
return Q_atoi_character( sign, str );
// assume decimal
int val = 0;
while( 1 )
{
c = *str++;
int c = *str++;
if( c < '0' || c > '9' )
return val * sign;
val = val * 10 + c - '0';
@@ -127,9 +124,6 @@ int Q_atoi( const char *str )
float Q_atof( const char *str )
{
double val = 0;
int c, sign, decimal, total;
if( COM_StringEmptyOrNULL( str ))
return 0;
@@ -138,6 +132,7 @@ float Q_atof( const char *str )
if( COM_StringEmptyOrNULL( str ))
return 0;
int sign;
if( *str == '-' )
{
sign = -1;
@@ -154,12 +149,13 @@ float Q_atof( const char *str )
return Q_atoi_character( sign, str );
// assume decimal
decimal = -1;
total = 0;
double val = 0;
int decimal = -1;
int total = 0;
while( 1 )
{
c = *str++;
int c = *str++;
if( c == '.' )
{
decimal = total;
@@ -186,13 +182,12 @@ float Q_atof( const char *str )
void Q_atov( float *vec, const char *str, size_t siz )
{
const char *pstr, *pfront;
int j;
memset( vec, 0, sizeof( *vec ) * siz );
pstr = pfront = str;
for( j = 0; j < siz; j++ )
const char *pstr = str;
const char *pfront = str;
for( size_t j = 0; j < siz; j++ )
{
vec[j] = Q_atof( pfront );
@@ -208,8 +203,8 @@ void Q_atov( float *vec, const char *str, size_t siz )
static qboolean Q_starcmp( const char *pattern, const char *text )
{
char c, c1;
const char *p = pattern, *t = text;
char c;
const char *p = pattern, *t = text;
while(( c = *p++ ) == '?' || c == '*' )
{
@@ -219,7 +214,7 @@ static qboolean Q_starcmp( const char *pattern, const char *text )
if( c == '\0' ) return true;
for( c1 = (( c == '\\' ) ? *p : c ); ; )
for( char c1 = (( c == '\\' ) ? *p : c ); ; )
{
if( Q_tolower( *t ) == c1 && Q_stricmpext( p - 1, t ))
return true;
@@ -298,19 +293,17 @@ const byte *Q_memmem( const byte *haystack, size_t haystacklen, const byte *need
void Q_memor( byte *XASH_RESTRICT dst, const byte *XASH_RESTRICT src, size_t len )
{
size_t i;
for( i = 0; i < len; i++ ) // msvc likes to optimize this loop form
for( size_t i = 0; i < len; i++ ) // msvc likes to optimize this loop form
dst[i] |= src[i];
}
const char *Q_timestamp( int format )
{
static string timestamp;
time_t crt_time;
const struct tm *crt_tm;
static string timestamp;
time_t crt_time;
time( &crt_time );
crt_tm = localtime( &crt_time );
const struct tm *crt_tm = localtime( &crt_time );
switch( format )
{
@@ -350,13 +343,10 @@ const char *Q_timestamp( int format )
#if !HAVE_STRCASESTR
char *Q_stristr( const char *string, const char *string2 )
{
int c;
size_t len;
if( !string || !string2 ) return NULL;
c = Q_tolower( *string2 );
len = Q_strlen( string2 );
int c = Q_tolower( *string2 );
size_t len = Q_strlen( string2 );
while( string )
{
@@ -376,11 +366,10 @@ char *Q_stristr( const char *string, const char *string2 )
int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list args )
{
int result;
if( unlikely( buffersize == 0 ))
return -1; // report as overflow
int result;
#ifndef _MSC_VER
result = vsnprintf( buffer, buffersize, format, args );
#else
@@ -408,11 +397,10 @@ int Q_vsnprintf( char *buffer, size_t buffersize, const char *format, va_list ar
int Q_snprintf( char *buffer, size_t buffersize, const char *format, ... )
{
va_list args;
int result;
va_list args;
va_start( args, format );
result = Q_vsnprintf( buffer, buffersize, format, args );
int result = Q_vsnprintf( buffer, buffersize, format, args );
va_end( args );
return result;
@@ -431,18 +419,16 @@ void COM_StripColors( const char *in, char *out )
char *Q_pretifymem( float value, int digitsafterdecimal )
{
static char output[8][32];
static int current;
static char output[8][32];
static int current;
const float onekb = 1024.0f;
const float onemb = onekb * onekb;
const char *suffix;
char *out = output[current];
char val[32], *i, *o, *dot;
int pos;
char *out = output[current];
current = ( current + 1 ) & ( 8 - 1 );
// first figure out which bin to use
const char *suffix;
if( value > onemb )
{
value /= onemb;
@@ -459,20 +445,21 @@ char *Q_pretifymem( float value, int digitsafterdecimal )
}
// if it's basically integral, don't do any decimals
char val[32];
if( fabs( value - (int)value ) < 0.00001f || digitsafterdecimal <= 0 )
Q_snprintf( val, sizeof( val ), "%i %s", (int)Q_rint( value ), suffix );
else if( digitsafterdecimal >= 1 )
Q_snprintf( val, sizeof( val ), "%.*f %s", digitsafterdecimal, (double)value, suffix );
// copy from in to out
i = val;
o = out;
char *i = val;
char *o = out;
// search for decimal or if it was integral, find the space after the raw number
dot = Q_strchr( i, '.' );
char *dot = Q_strchr( i, '.' );
if( !dot ) dot = Q_strchr( i, ' ' );
pos = dot - i; // compute position of dot
int pos = dot - i; // compute position of dot
pos -= 3; // don't put a comma if it's <= 3 long
while( *i )
@@ -503,17 +490,16 @@ a1ba: adapted and simplified version from QuakeSpasm
*/
void COM_FileBase( const char *in, char *out, size_t size )
{
const char *dot, *slash, *s;
size_t len;
if( unlikely( COM_StringEmptyOrNULL( in ) || size <= 1 ))
{
out[0] = 0;
return;
}
slash = in;
dot = NULL;
const char *slash = in;
const char *dot = NULL;
const char *s;
for( s = in; *s; s++ )
{
if( *s == '/' || *s == '\\' )
@@ -526,7 +512,7 @@ void COM_FileBase( const char *in, char *out, size_t size )
if( dot == NULL || dot < slash )
dot = s;
len = Q_min( size - 1, dot - slash );
size_t len = Q_min( size - 1, dot - slash );
memcpy( out, slash, len );
out[len] = 0;
@@ -539,9 +525,7 @@ COM_FileExtension
*/
const char *COM_FileExtension( const char *in )
{
const char *dot;
dot = Q_strrchr( in, '.' );
const char *dot = Q_strrchr( in, '.' );
// quickly exit if there is no dot at all
if( dot == NULL )
@@ -561,15 +545,13 @@ COM_FileWithoutPath
*/
const char *COM_FileWithoutPath( const char *in )
{
const char *separator, *backslash, *colon;
separator = Q_strrchr( in, '/' );
backslash = Q_strrchr( in, '\\' );
const char *separator = Q_strrchr( in, '/' );
const char *backslash = Q_strrchr( in, '\\' );
if( !separator || separator < backslash )
separator = backslash;
colon = Q_strrchr( in, ':' );
const char *colon = Q_strrchr( in, ':' );
if( !separator || separator < colon )
separator = colon;
@@ -621,14 +603,12 @@ COM_DefaultExtension
*/
void COM_DefaultExtension( char *path, const char *extension, size_t size )
{
size_t len;
// if path doesn't have a .EXT, append extension
// (extension should include the .)
if( !COM_StringEmptyOrNULL( COM_FileExtension( path )))
return;
len = Q_strlen( path );
size_t len = Q_strlen( path );
Q_strncpy( &path[len], extension, size - len );
}
@@ -650,9 +630,7 @@ COM_RemoveLineFeed
*/
void COM_RemoveLineFeed( char *str, size_t bufsize )
{
size_t i;
for( i = 0; i < bufsize && *str != '\0'; i++, str++ )
for( size_t i = 0; i < bufsize && *str != '\0'; i++, str++ )
{
if( *str == '\r' || *str == '\n' )
*str = '\0';
@@ -910,8 +888,6 @@ int matchpattern( const char *in, const char *pattern, qboolean caseinsensitive
// if false * matches 0 or more characters
int matchpattern_with_separator( const char *in, const char *pattern, qboolean caseinsensitive, const char *separators, qboolean wildcard_least_one )
{
int c1, c2;
while( *pattern )
{
switch( *pattern )
@@ -948,10 +924,10 @@ int matchpattern_with_separator( const char *in, const char *pattern, qboolean c
{
if( !caseinsensitive )
return 0; // no match
c1 = *in;
int c1 = *in;
if( c1 >= 'A' && c1 <= 'Z' )
c1 += 'a' - 'A';
c2 = *pattern;
int c2 = *pattern;
if( c2 >= 'A' && c2 <= 'Z' )
c2 += 'a' - 'A';
if( c1 != c2 )

View File

@@ -16,17 +16,13 @@ GNU General Public License for more details.
void ClearExports( const dllfunc_t *funcs, size_t num_funcs )
{
size_t i;
for( i = 0; i < num_funcs; i++ )
for( size_t i = 0; i < num_funcs; i++ )
*(funcs[i].func) = NULL;
}
qboolean ValidateExports( const dllfunc_t *funcs, size_t num_funcs )
{
size_t i;
for( i = 0; i < num_funcs; i++ )
for( size_t i = 0; i < num_funcs; i++ )
{
if( *(funcs[i].func) == NULL )
return false;

View File

@@ -34,8 +34,7 @@ void Matrix3x4_VectorTransform( const matrix3x4 in, const float v[3], float out[
void Matrix3x4_VectorITransform( const matrix3x4 in, const float v[3], float out[3] )
{
vec3_t dir;
vec3_t dir;
dir[0] = v[0] - in[0][3];
dir[1] = v[1] - in[1][3];
dir[2] = v[2] - in[2][3];
@@ -116,10 +115,10 @@ void Matrix3x4_FromOriginQuat( matrix3x4 out, const vec4_t quaternion, const vec
void Matrix3x4_CreateFromEntity( matrix3x4 out, const vec3_t angles, const vec3_t origin, float scale )
{
float angle, sr, sp, sy, cr, cp, cy;
if( angles[ROLL] )
{
float angle, sr, sp, sy, cr, cp, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
angle = angles[PITCH] * (M_PI2 / 360.0f);
@@ -142,6 +141,8 @@ void Matrix3x4_CreateFromEntity( matrix3x4 out, const vec3_t angles, const vec3_
}
else if( angles[PITCH] )
{
float angle, sp, sy, cp, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
angle = angles[PITCH] * (M_PI2 / 360.0f);
@@ -162,6 +163,8 @@ void Matrix3x4_CreateFromEntity( matrix3x4 out, const vec3_t angles, const vec3_
}
else if( angles[YAW] )
{
float angle, sy, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
@@ -202,12 +205,11 @@ Matrix3x4_TransformAABB
*/
void Matrix3x4_TransformAABB( const matrix3x4 world, const vec3_t mins, const vec3_t maxs, vec3_t absmin, vec3_t absmax )
{
vec3_t localCenter, localExtents;
vec3_t worldCenter, worldExtents;
vec3_t localCenter, localExtents;
VectorAverage( mins, maxs, localCenter );
VectorSubtract( maxs, localCenter, localExtents );
vec3_t worldCenter, worldExtents;
Matrix3x4_VectorTransform( world, localCenter, worldCenter );
worldExtents[0] = DotProductFabs( localExtents, world[0] ); // auto-transposed!
worldExtents[1] = DotProductFabs( localExtents, world[1] );
@@ -233,8 +235,7 @@ void Matrix4x4_VectorTransform( const matrix4x4 in, const float v[3], float out[
void Matrix4x4_VectorITransform( const matrix4x4 in, const float v[3], float out[3] )
{
vec3_t dir;
vec3_t dir;
dir[0] = v[0] - in[0][3];
dir[1] = v[1] - in[1][3];
dir[2] = v[2] - in[2][3];
@@ -276,10 +277,10 @@ void Matrix4x4_ConcatTransforms( matrix4x4 out, const matrix4x4 in1, const matri
void Matrix4x4_CreateFromEntity( matrix4x4 out, const vec3_t angles, const vec3_t origin, float scale )
{
float angle, sr, sp, sy, cr, cp, cy;
if( angles[ROLL] )
{
float angle, sr, sp, sy, cr, cp, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
angle = angles[PITCH] * (M_PI2 / 360.0f);
@@ -306,6 +307,8 @@ void Matrix4x4_CreateFromEntity( matrix4x4 out, const vec3_t angles, const vec3_
}
else if( angles[PITCH] )
{
float angle, sp, sy, cp, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
angle = angles[PITCH] * (M_PI2 / 360.0f);
@@ -330,6 +333,8 @@ void Matrix4x4_CreateFromEntity( matrix4x4 out, const vec3_t angles, const vec3_
}
else if( angles[YAW] )
{
float angle, sy, cy;
angle = angles[YAW] * (M_PI2 / 360.0f);
SinCos( angle, &sy, &cy );
@@ -439,11 +444,10 @@ void Matrix4x4_Invert_Simple( matrix4x4 out, const matrix4x4 in1 )
qboolean Matrix4x4_Invert_Full( matrix4x4 out, const matrix4x4 in1 )
{
float *temp;
float *r[4];
float rtemp[4][8];
float m[4];
float s;
float *r[4];
float rtemp[4][8];
float m[4];
float s;
r[0] = rtemp[0];
r[1] = rtemp[1];
@@ -488,21 +492,21 @@ qboolean Matrix4x4_Invert_Full( matrix4x4 out, const matrix4x4 in1 )
if( fabs( r[3][0] ) > fabs( r[2][0] ))
{
temp = r[3];
float *temp = r[3];
r[3] = r[2];
r[2] = temp;
}
if( fabs( r[2][0] ) > fabs( r[1][0] ))
{
temp = r[2];
float *temp = r[2];
r[2] = r[1];
r[1] = temp;
}
if( fabs( r[1][0] ) > fabs( r[0][0] ))
{
temp = r[1];
float *temp = r[1];
r[1] = r[0];
r[0] = temp;
}
@@ -562,14 +566,14 @@ qboolean Matrix4x4_Invert_Full( matrix4x4 out, const matrix4x4 in1 )
if( fabs( r[3][1] ) > fabs( r[2][1] ))
{
temp = r[3];
float *temp = r[3];
r[3] = r[2];
r[2] = temp;
}
if( fabs( r[2][1] ) > fabs( r[1][1] ))
{
temp = r[2];
float *temp = r[2];
r[2] = r[1];
r[1] = temp;
}
@@ -613,7 +617,7 @@ qboolean Matrix4x4_Invert_Full( matrix4x4 out, const matrix4x4 in1 )
if( fabs( r[3][2] ) > fabs( r[2][2] ))
{
temp = r[3];
float *temp = r[3];
r[3] = r[2];
r[2] = temp;
}

View File

@@ -173,23 +173,20 @@ size_t Q_UTF8Length( const char *s )
size_t Q_UTF16ToUTF8( char *dst, size_t dstsize, const uint16_t *src, size_t srcsize )
{
utfstate_t state = { 0 };
size_t dsti = 0, srci;
if( !dst || !src || !dstsize || !srcsize )
return 0;
for( srci = 0; srci < srcsize && src[srci]; srci++ )
{
uint32_t ch;
size_t len;
utfstate_t state = { 0 };
size_t dsti = 0;
ch = Q_DecodeUTF16( &state, src[srci] );
for( size_t srci = 0; srci < srcsize && src[srci]; srci++ )
{
uint32_t ch = Q_DecodeUTF16( &state, src[srci] );
if( ch == 0 )
continue;
len = Q_CodepointLength( ch );
size_t len = Q_CodepointLength( ch );
if( dsti + len + 1 > dstsize )
break;
@@ -215,8 +212,6 @@ static const uint16_t table_cp1251[64] = {
uint32_t Q_UnicodeToCP1251( uint32_t uc )
{
size_t i;
if( uc < 0x80 )
return uc;
@@ -226,7 +221,7 @@ uint32_t Q_UnicodeToCP1251( uint32_t uc )
if( uc >= 0x0430 && uc <= 0x044F )
return uc - 0x430 + 0xE0;
for( i = 0; i < sizeof( table_cp1251 ) / sizeof( table_cp1251[0] ); i++ )
for( size_t i = 0; i < sizeof( table_cp1251 ) / sizeof( table_cp1251[0] ); i++ )
{
if( uc == (uint32_t)table_cp1251[i] )
return i + 0x80;

View File

@@ -40,10 +40,10 @@ const float m_bytenormals[NUMVERTEXNORMALS][3] =
uint16_t FloatToHalf( float v )
{
unsigned int i = FloatAsUint( v );
unsigned int e = (i >> 23) & 0x00ff;
unsigned int m = i & 0x007fffff;
unsigned short h;
unsigned int i = FloatAsUint( v );
unsigned int e = (i >> 23) & 0x00ff;
unsigned int m = i & 0x007fffff;
unsigned short h;
if( e <= 127 - 15 )
h = ((m | 0x00800000) >> (127 - 14 - e)) >> 13;
@@ -94,20 +94,17 @@ round the hullsize to nearest 'right' value
*/
void RoundUpHullSize( vec3_t size )
{
int i, j;
for( i = 0; i < 3; i++)
for( int i = 0; i < 3; i++)
{
qboolean negative = false;
float result, value;
qboolean negative = false;
float value = size[i];
value = size[i];
if( value < 0.0f ) negative = true;
value = Q_ceil( fabs( value ));
result = Q_ceil( size[i] );
float result = Q_ceil( size[i] );
// lookup hull table to find nearest supposed value
for( j = 0; j < sizeof( hull_table ) / sizeof( hull_table[0] ); j++ )
for( size_t j = 0; j < sizeof( hull_table ) / sizeof( hull_table[0] ); j++ )
{
if( value > hull_table[j] )
continue; // ceil only
@@ -143,16 +140,13 @@ rsqrt
*/
float Q_rsqrt( float number )
{
int i;
float x, y;
if( number == 0.0f )
return 0.0f;
x = number * 0.5f;
i = FloatAsInt( number ); // evil floating point bit level hacking
float x = number * 0.5f;
int i = FloatAsInt( number ); // evil floating point bit level hacking
i = 0x5f3759df - (i >> 1); // what the fuck?
y = IntAsFloat( i );
float y = IntAsFloat( i );
y = y * (1.5f - (x * y * y)); // first iteration
return y;
@@ -160,13 +154,11 @@ float Q_rsqrt( float number )
void VectorVectors( const vec3_t forward, vec3_t right, vec3_t up )
{
float d;
right[0] = forward[2];
right[1] = -forward[0];
right[2] = forward[1];
d = DotProduct( forward, right );
float d = DotProduct( forward, right );
VectorMA( right, -d, forward, right );
VectorNormalize( right );
CrossProduct( right, forward, up );
@@ -181,14 +173,14 @@ VectorAngles
*/
void GAME_EXPORT VectorAngles( const float *forward, float *angles )
{
float tmp, yaw, pitch;
if( !forward || !angles )
{
if( angles ) VectorClear( angles );
return;
}
float yaw, pitch;
if( forward[1] == 0 && forward[0] == 0 )
{
// fast case
@@ -202,7 +194,7 @@ void GAME_EXPORT VectorAngles( const float *forward, float *angles )
yaw = ( atan2( forward[1], forward[0] ) * 180 / M_PI_F );
if( yaw < 0 ) yaw += 360;
tmp = sqrt( forward[0] * forward[0] + forward[1] * forward[1] );
float tmp = sqrt( forward[0] * forward[0] + forward[1] * forward[1] );
pitch = ( atan2( forward[2], tmp ) * 180 / M_PI_F );
if( pitch < 0 ) pitch += 360;
}
@@ -218,10 +210,9 @@ VectorsAngles
*/
void VectorsAngles( const vec3_t forward, const vec3_t right, const vec3_t up, vec3_t angles )
{
float pitch, cpitch, yaw, roll;
pitch = -asin( forward[2] );
cpitch = cos( pitch );
float pitch = -asin( forward[2] );
float cpitch = cos( pitch );
float yaw, roll;
if( fabs( cpitch ) > EQUAL_EPSILON ) // gimball lock?
{
@@ -252,17 +243,15 @@ SphereIntersect
*/
qboolean SphereIntersect( const vec3_t vSphereCenter, float fSphereRadiusSquared, const vec3_t vLinePt, const vec3_t vLineDir )
{
float a, b, c, insideSqr;
vec3_t p;
// translate sphere to origin.
vec3_t p;
VectorSubtract( vLinePt, vSphereCenter, p );
a = DotProduct( vLineDir, vLineDir );
b = 2.0f * DotProduct( p, vLineDir );
c = DotProduct( p, p ) - fSphereRadiusSquared;
float a = DotProduct( vLineDir, vLineDir );
float b = 2.0f * DotProduct( p, vLineDir );
float c = DotProduct( p, p ) - fSphereRadiusSquared;
insideSqr = b * b - 4.0f * a * c;
float insideSqr = b * b - 4.0f * a * c;
if( insideSqr <= 0.000001f )
return false;
return true;
@@ -283,11 +272,10 @@ if not, reverse q
static void QuaternionAlign( const vec4_t p, const vec4_t q, vec4_t qt )
{
// decide if one of the quaternions is backwards
float a = 0.0f;
float b = 0.0f;
int i;
float a = 0.0f;
float b = 0.0f;
for( i = 0; i < 4; i++ )
for( int i = 0; i < 4; i++ )
{
a += (p[i] - q[i]) * (p[i] - q[i]);
b += (p[i] + q[i]) * (p[i] + q[i]);
@@ -295,12 +283,12 @@ static void QuaternionAlign( const vec4_t p, const vec4_t q, vec4_t qt )
if( a > b )
{
for( i = 0; i < 4; i++ )
for( int i = 0; i < 4; i++ )
qt[i] = -q[i];
}
else
{
for( i = 0; i < 4; i++ )
for( int i = 0; i < 4; i++ )
qt[i] = q[i];
}
}
@@ -312,18 +300,16 @@ QuaternionSlerpNoAlign
*/
static void QuaternionSlerpNoAlign( const vec4_t p, const vec4_t q, float t, vec4_t qt )
{
float omega, cosom, sinom, sclp, sclq;
int i;
// 0.0 returns p, 1.0 return q.
cosom = p[0] * q[0] + p[1] * q[1] + p[2] * q[2] + p[3] * q[3];
float cosom = p[0] * q[0] + p[1] * q[1] + p[2] * q[2] + p[3] * q[3];
float sclp, sclq;
if(( 1.0f + cosom ) > 0.000001f )
{
if(( 1.0f - cosom ) > 0.000001f )
{
omega = acos( cosom );
sinom = sin( omega );
float omega = acos( cosom );
float sinom = sin( omega );
sclp = sin( (1.0f - t) * omega) / sinom;
sclq = sin( t * omega ) / sinom;
}
@@ -333,7 +319,7 @@ static void QuaternionSlerpNoAlign( const vec4_t p, const vec4_t q, float t, vec
sclq = t;
}
for( i = 0; i < 4; i++ )
for( int i = 0; i < 4; i++ )
{
qt[i] = sclp * p[i] + sclq * q[i];
}
@@ -347,7 +333,7 @@ static void QuaternionSlerpNoAlign( const vec4_t p, const vec4_t q, float t, vec
sclp = sin(( 1.0f - t ) * ( 0.5f * M_PI_F ));
sclq = sin( t * ( 0.5f * M_PI_F ));
for( i = 0; i < 3; i++ )
for( int i = 0; i < 3; i++ )
{
qt[i] = sclp * p[i] + sclq * qt[i];
}
@@ -437,11 +423,9 @@ int BoxOnPlaneSide( const vec3_t emins, const vec3_t emaxs, const mplane_t *p )
void R_StudioCalcBones( int frame, float s, const mstudiobone_t *pbone, const mstudioanim_t *panim, const float *adj, vec3_t pos, vec4_t q )
{
float v1[6], v2[6];
int i, max;
int max = q != NULL ? 6 : 3;
max = q != NULL ? 6 : 3;
for( i = 0; i < max; i++ )
for( int i = 0; i < max; i++ )
{
mstudioanimvalue_t *panimvalue = (mstudioanimvalue_t *)((byte *)panim + panim->offset[i] );
int j = frame;