public uint GetSourceFromIndex(SourcePoolIndex poolIndex, int srcInd) { if (Disabled || srcInd < 0 || srcInd >= sourcePools[(int)poolIndex].ALSources.Length) { return(0); } if (!Al.IsSource(sourcePools[(int)poolIndex].ALSources[srcInd])) { throw new Exception("alSources[" + srcInd.ToString() + "] is invalid!"); } return(sourcePools[(int)poolIndex].ALSources[srcInd]); }
public SoundSourcePool(int sourceCount = SoundManager.SOURCE_COUNT) { int alError = Al.NoError; ALSources = new uint[sourceCount]; for (int i = 0; i < sourceCount; i++) { Al.GenSource(out ALSources[i]); alError = Al.GetError(); if (alError != Al.NoError) { throw new Exception("Error generating alSource[" + i.ToString() + "]: " + Al.GetErrorString(alError)); } if (!Al.IsSource(ALSources[i])) { throw new Exception("Generated alSource[" + i.ToString() + "] is invalid!"); } Al.SourceStop(ALSources[i]); alError = Al.GetError(); if (alError != Al.NoError) { throw new Exception("Error stopping newly generated alSource[" + i.ToString() + "]: " + Al.GetErrorString(alError)); } Al.Sourcef(ALSources[i], Al.MinGain, 0.0f); alError = Al.GetError(); if (alError != Al.NoError) { throw new Exception("Error setting min gain: " + Al.GetErrorString(alError)); } Al.Sourcef(ALSources[i], Al.MaxGain, 1.0f); alError = Al.GetError(); if (alError != Al.NoError) { throw new Exception("Error setting max gain: " + Al.GetErrorString(alError)); } Al.Sourcef(ALSources[i], Al.RolloffFactor, 1.0f); alError = Al.GetError(); if (alError != Al.NoError) { throw new Exception("Error setting rolloff factor: " + Al.GetErrorString(alError)); } } }