public float CalculateVolume(float interpolationTime) { switch (FadeType) { case FadeType.Linear: return(EasingFunctions.Linear(_fromValue, _toValue, interpolationTime)); case FadeType.ExpoIn: return(EasingFunctions.ExponentialIn(_fromValue, _toValue, interpolationTime)); case FadeType.ExpoOut: return(EasingFunctions.ExponentialOut(_fromValue, _toValue, interpolationTime)); case FadeType.QuadraticIn: return(EasingFunctions.QuadraticIn(_fromValue, _toValue, interpolationTime)); case FadeType.QuadraticOut: return(EasingFunctions.QuadraticOut(_fromValue, _toValue, interpolationTime)); default: // If fade type is none or undefined, return fade factor of 1f Debug.LogWarning("Hey! Invalid fade type: " + FadeType.ToString()); return(1f); } }
private float CalculateDistanceVolume(Voice voice) { float distanceVolume = 1f; Vector3 headPos = listener.transform.position; float distance = Vector3.Distance(headPos, voice.Position); float time = Mathf.InverseLerp(voice.MinDistance, voice.MaxDistance, distance); switch (voice.Attenuation) { case AttenuationMode.Linear: distanceVolume = 1f - time; break; case AttenuationMode.Logarithmic: distanceVolume = EasingFunctions.ExponentialOut(1f, 0f, time); break; default: break; } return(distanceVolume); }