Clamp the Y position before trying to get the elevation

This commit is contained in:
Chris Robinson 2012-06-28 17:26:00 -07:00
parent 6f3be31b60
commit bc6751237c

View File

@ -677,8 +677,9 @@ ALvoid CalcSourceParams(ALsource *ALSource, const ALCcontext *ALContext)
/* Calculate elevation and azimuth only when the source is not at
* the listener. This prevents +0 and -0 Z from producing
* inconsistent panning. */
ev = aluAsin(Position[1]);
* inconsistent panning. Also, clamp Y in case FP precision errors
* cause it to land outside of -1..+1. */
ev = aluAsin(clampf(Position[1], -1.0f, 1.0f));
az = aluAtan2(Position[0], -Position[2]*ZScale);
}