r539 - in trunk: . code/client

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Feb 12 05:43:38 EST 2006


Author: tma
Date: 2006-02-12 05:43:37 -0500 (Sun, 12 Feb 2006)
New Revision: 539

Modified:
   trunk/README
   trunk/code/client/snd_openal.c
Log:
* OpenAL now respatializes using the player entity origin instead of the view
  origin by default. The old behaviour is available by setting
  s_alSpatEntOrigin to 0.


Modified: trunk/README
===================================================================
--- trunk/README	2006-02-12 10:05:32 UTC (rev 538)
+++ trunk/README	2006-02-12 10:43:37 UTC (rev 539)
@@ -105,6 +105,7 @@
   s_alMinDistance         - the value of AL_REFERENCE_DISTANCE for each source
   s_alRolloff             - the value of AL_ROLLOFF_FACTOR for each source
   s_alMaxSpeakerDistance  - ET_SPEAKERS beyond this distance are culled
+  s_alSpatEntOrigin       - spatialize entity origin instead of view origin
   s_alDriver              - which OpenAL library to use
 
   s_sdlBits               - SDL bit resolution

Modified: trunk/code/client/snd_openal.c
===================================================================
--- trunk/code/client/snd_openal.c	2006-02-12 10:05:32 UTC (rev 538)
+++ trunk/code/client/snd_openal.c	2006-02-12 10:43:37 UTC (rev 539)
@@ -39,6 +39,7 @@
 cvar_t *s_alRolloff;
 cvar_t *s_alDriver;
 cvar_t *s_alMaxSpeakerDistance;
+cvar_t *s_alSpatEntOrigin;
 
 /*
 =================
@@ -1460,10 +1461,18 @@
 static
 void S_AL_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int inwater )
 {
-	float velocity[3] = {0.0f, 0.0f, 0.0f};
-	float orientation[6];
+	float		velocity[3] = {0.0f, 0.0f, 0.0f};
+	float		orientation[6];
+	vec3_t	sorigin;
 
-	S_AL_SanitiseVector( (vec_t *)origin );
+	if( s_alSpatEntOrigin->integer && entityNum )
+		VectorCopy( entityList[ entityNum ].origin, sorigin );
+	else
+	{
+		VectorCopy( origin, sorigin );
+		S_AL_SanitiseVector( sorigin );
+	}
+
 	S_AL_SanitiseVector( axis[ 0 ] );
 	S_AL_SanitiseVector( axis[ 1 ] );
 	S_AL_SanitiseVector( axis[ 2 ] );
@@ -1471,10 +1480,10 @@
 	orientation[0] = axis[0][0]; orientation[1] = axis[0][1]; orientation[2] = axis[0][2];
 	orientation[3] = axis[2][0]; orientation[4] = axis[2][1]; orientation[5] = axis[2][2];
 
-	VectorCopy( origin, lastListenerOrigin );
+	VectorCopy( sorigin, lastListenerOrigin );
 
 	// Set OpenAL listener paramaters
-	qalListenerfv(AL_POSITION, (ALfloat *)origin);
+	qalListenerfv(AL_POSITION, (ALfloat *)sorigin);
 	qalListenerfv(AL_VELOCITY, velocity);
 	qalListenerfv(AL_ORIENTATION, orientation);
 }
@@ -1631,6 +1640,7 @@
 	s_alMinDistance = Cvar_Get( "s_alMinDistance", "120", CVAR_CHEAT );
 	s_alRolloff = Cvar_Get( "s_alRolloff", "0.8", CVAR_CHEAT );
 	s_alMaxSpeakerDistance = Cvar_Get( "s_alMaxSpeakerDistance", "1024", CVAR_ARCHIVE );
+	s_alSpatEntOrigin = Cvar_Get( "s_alSpatEntOrigin", "1", CVAR_ARCHIVE );
 
 	s_alDriver = Cvar_Get( "s_alDriver", ALDRIVER_DEFAULT, CVAR_ARCHIVE );
 




More information about the quake3-commits mailing list