// Update is called once per frame void Update() { if (VolumeStatus != VolumeStatuses.Static) { if (FadeTimeLeft > 0) { FadeTimeLeft -= Time.deltaTime; } } switch (VolumeStatus) { case VolumeStatuses.FadingIn: if (FadeTimeLeft <= 0) { OnFadeInComplete(); } else { float t = FadeTimeLeft / MaxFadeTime; SetSpeakerVolume(OrigFadeVolume + (DestFadeVolume - OrigFadeVolume) * EnsoHelpers.CalculateEqualPowerCrossfade(t, true)); } break; case VolumeStatuses.FadingOut: if (FadeTimeLeft <= 0) { OnFadeOutComplete(); } else { float t = FadeTimeLeft / MaxFadeTime; SetSpeakerVolume(OrigFadeVolume * EnsoHelpers.CalculateEqualPowerCrossfade(t, false)); } break; } }