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 1eae7bc35b
commit 41069c4582

View file

@ -89,9 +89,17 @@ float ISource::computeManualRolloff(double alpha, float sqrdist, float distMin,
float rolloff = distMin / dist;
if (alpha <= -1.0f) return rolloff;
double mb = mbMin * (dist - distMin) / (distMax - distMin);
float mbrolloff = (float)pow(10.0, (double)mb / 2000.0);
return ((1.0 + alpha) * mbrolloff - alpha * rolloff);
if (dist > distMax)
{
// 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
{