diff options
author | Chris Robinson <[email protected]> | 2011-04-22 23:17:27 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2011-04-22 23:17:27 -0700 |
commit | 10a9753183567ad36fbcc3228ded34c5beebdbd2 (patch) | |
tree | 6a0dd9a02680df631980ab6670a9aee15728a072 | |
parent | 1e8718fe8787be8c17403b3e19fbf23916ff7193 (diff) |
Add a compatibility option to treat cone angles as half angles
All previous versions of the library treated the source cone angles as half
angles, which is contrary to the spec. Setting the __ALSOFT_HALF_ANGLE_CONES
environment variable to "true" or "1" restores the buggy behavior for
compatibility with applications that expect it.
This is not a config file option because new apps should not be made to depend
on the old behavior.
-rw-r--r-- | Alc/ALc.c | 7 | ||||
-rw-r--r-- | Alc/ALu.c | 4 | ||||
-rw-r--r-- | OpenAL32/Include/alMain.h | 2 |
3 files changed, 11 insertions, 2 deletions
@@ -384,6 +384,9 @@ static ALint RTPrioLevel; // Output Log File static FILE *LogFile; +// Cone scalar +ALdouble ConeScale = 0.5; + /////////////////////////////////////////////////////// @@ -435,6 +438,10 @@ static void alc_init(void) if(!LogFile) LogFile = stderr; + str = getenv("__ALSOFT_HALF_ANGLE_CONES"); + if(str && (strcasecmp(str, "true") == 0 || strtol(str, NULL, 0) == 1)) + ConeScale = 1.0; + InitializeCriticalSection(&g_csMutex); ALTHUNK_INIT(); ReadALConfig(); @@ -357,8 +357,8 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext) MinDist = ALSource->flRefDistance; MaxDist = ALSource->flMaxDistance; Rolloff = ALSource->flRollOffFactor; - InnerAngle = ALSource->flInnerAngle * 0.5f; - OuterAngle = ALSource->flOuterAngle * 0.5f; + InnerAngle = ALSource->flInnerAngle * ConeScale; + OuterAngle = ALSource->flOuterAngle * ConeScale; OuterGainHF = ALSource->OuterGainHF; AirAbsorptionFactor = ALSource->AirAbsorptionFactor; diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 9aad3036..eab68070 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -583,6 +583,8 @@ void al_print(const char *fname, unsigned int line, const char *fmt, ...) PRINTF_STYLE(3,4); #define AL_PRINT(...) al_print(__FILE__, __LINE__, __VA_ARGS__) +extern ALdouble ConeScale; + #ifdef __cplusplus } #endif |