private void SetOcclusionEfx(float gain, float cutoff) { if (FilterHandle == 0) { FilterHandle = EFX.GenFilter(); EFX.Filter(FilterHandle, FilterInteger.FilterType, (int)FilterType.Lowpass); } EFX.Filter(FilterHandle, FilterFloat.LowpassGain, gain); EFX.Filter(FilterHandle, FilterFloat.LowpassGainHF, cutoff); AL.Source(SourceHandle, ALSourcei.EfxDirectFilter, FilterHandle); }
public void SetOcclusion(float blocks) { _checkDisposed(); var cutoff = (float)Math.Exp(-blocks * 1); float gain = (float)Math.Pow(cutoff, 0.1); if (FilterHandle == 0) { FilterHandle = EFX.GenFilter(); EFX.Filter(FilterHandle, FilterInteger.FilterType, (int)FilterType.Lowpass); } EFX.Filter(FilterHandle, FilterFloat.LowpassGain, gain); EFX.Filter(FilterHandle, FilterFloat.LowpassGainHF, cutoff); AL.Source(SourceHandle, ALSourcei.EfxDirectFilter, FilterHandle); _checkAlError(); }