mirror of
https://github.com/UberGames/lilium-voyager.git
synced 2024-11-12 23:44:21 +00:00
* Added Q_isnan for NaN tests with -ffast-math
* Fixed UT/OpenAL work around
This commit is contained in:
parent
73e4d33d3b
commit
58c8175024
3 changed files with 27 additions and 9 deletions
|
@ -492,15 +492,12 @@ S_AL_SanitiseVector
|
||||||
#define S_AL_SanitiseVector(v) _S_AL_SanitiseVector(v,__LINE__)
|
#define S_AL_SanitiseVector(v) _S_AL_SanitiseVector(v,__LINE__)
|
||||||
static void _S_AL_SanitiseVector( vec3_t v, int line )
|
static void _S_AL_SanitiseVector( vec3_t v, int line )
|
||||||
{
|
{
|
||||||
// NaNs can't be compared for equality, thus always fail this test
|
if( Q_isnan( v[ 0 ] ) || Q_isnan( v[ 1 ] ) || Q_isnan( v[ 2 ] ) )
|
||||||
if( v[ 0 ] == v[ 0 ] &&
|
{
|
||||||
v[ 1 ] == v[ 1 ] &&
|
Com_DPrintf( S_COLOR_YELLOW "WARNING: vector with one or more NaN components "
|
||||||
v[ 2 ] == v[ 2 ] )
|
"being passed to OpenAL at %s:%d -- zeroing\n", __FILE__, line );
|
||||||
return;
|
VectorClear( v );
|
||||||
|
}
|
||||||
Com_DPrintf( S_COLOR_YELLOW "WARNING: vector with one or more NaN components "
|
|
||||||
"being passed to OpenAL at %s:%d -- zeroing\n", __FILE__, line );
|
|
||||||
VectorClear( v );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1252,4 +1252,24 @@ void PerpendicularVector( vec3_t dst, const vec3_t src )
|
||||||
VectorNormalize( dst );
|
VectorNormalize( dst );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
================
|
||||||
|
Q_isnan
|
||||||
|
|
||||||
|
Don't pass doubles to this
|
||||||
|
================
|
||||||
|
*/
|
||||||
|
int Q_isnan( float x )
|
||||||
|
{
|
||||||
|
union
|
||||||
|
{
|
||||||
|
float f;
|
||||||
|
unsigned int i;
|
||||||
|
} t;
|
||||||
|
|
||||||
|
t.f = x;
|
||||||
|
t.i &= 0x7FFFFFFF;
|
||||||
|
t.i = 0x7F800000 - t.i;
|
||||||
|
|
||||||
|
return (int)( (unsigned int)t.i >> 31 );
|
||||||
|
}
|
||||||
|
|
|
@ -557,6 +557,7 @@ void MakeNormalVectors( const vec3_t forward, vec3_t right, vec3_t up );
|
||||||
void MatrixMultiply(float in1[3][3], float in2[3][3], float out[3][3]);
|
void MatrixMultiply(float in1[3][3], float in2[3][3], float out[3][3]);
|
||||||
void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
|
void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
|
||||||
void PerpendicularVector( vec3_t dst, const vec3_t src );
|
void PerpendicularVector( vec3_t dst, const vec3_t src );
|
||||||
|
int Q_isnan( float x );
|
||||||
|
|
||||||
|
|
||||||
//=============================================
|
//=============================================
|
||||||
|
|
Loading…
Reference in a new issue