Changed: Also handle distMax with negative alpha in new manual rolloff function

This commit is contained in:
kaetemi 2012-06-03 15:56:47 +02:00
parent a3616abd5c
commit 7b6e88dff9

View file

@ -89,9 +89,17 @@ float ISource::computeManualRolloff(double alpha, float sqrdist, float distMin,
float rolloff = distMin / dist; float rolloff = distMin / dist;
if (alpha <= -1.0f) return rolloff; if (alpha <= -1.0f) return rolloff;
double mb = mbMin * (dist - distMin) / (distMax - distMin); if (dist > distMax)
float mbrolloff = (float)pow(10.0, (double)mb / 2000.0); {
return ((1.0 + alpha) * mbrolloff - alpha * rolloff); // full attenuation of mbrolloff
return (-alpha * rolloff);
}
else
{
double mb = mbMin * (dist - distMin) / (distMax - distMin);
float mbrolloff = (float)pow(10.0, (double)mb / 2000.0);
return ((1.0 + alpha) * mbrolloff - alpha * rolloff);
}
} }
else else
{ {