diff --git a/Source/OpenTK/Audio/OpenAL/AL/Efx.cs b/Source/OpenTK/Audio/OpenAL/AL/Efx.cs index ed612fda..157b15fb 100644 --- a/Source/OpenTK/Audio/OpenAL/AL/Efx.cs +++ b/Source/OpenTK/Audio/OpenAL/AL/Efx.cs @@ -146,81 +146,43 @@ namespace OpenTK.Audio /// After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti. /// Number of Effects to be created. /// Pointer addressing sufficient memory to store n Effect object identifiers. - - public void GenEffects(int n, out int[] effects) - { - uint[] temp = new uint[n]; - GenEffects(n, out temp[0]); - effects = new int[n]; - for (int i = 0; i < n; i++) - { - effects[i] = (int)temp[i]; - } - } - - /// The GenEffects function is used to create one or more Effect objects. An Effect object stores an effect type and a set of parameter values to control that Effect. In order to use an Effect it must be attached to an Auxiliary Effect Slot object - /// After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti. - /// Pointer addressing sufficient memory to store n Effect object identifiers. - - public void GenEffects(int[] effects) - { - uint[] temp = new uint[effects.Length]; - GenEffects(temp.Length, out temp[0]); - for (int i = 0; i < temp.Length; i++) - { - effects[i] = (int)temp[i]; - } - } - - /// The GenEffects function is used to create one or more Effect objects. An Effect object stores an effect type and a set of parameter values to control that Effect. In order to use an Effect it must be attached to an Auxiliary Effect Slot object - /// After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti. - /// Number of Effects to be created. - /// Pointer addressing sufficient memory to store n Effect object identifiers. - - public int[] GenEffects(int n) - { - uint[] temp = new uint[n]; - GenEffects(temp.Length, out temp[0]); - int[] effects = new int[n]; - for (int i = 0; i < temp.Length; i++) - { - effects[i] = (int)temp[i]; - } - return effects; - } - - /// This function generates only one Effect. - /// Storage UInt32 for the new effect name/handle. - [CLSCompliant(false)] - public void GenEffects(out uint effect) + public void GenEffects(int n, out int effects) { unsafe { - fixed (uint* ptr = &effect) + fixed (int* ptr = &effects) { - Imported_alGenEffects(1, ptr); + Imported_alGenEffects(n, (uint*)ptr); + effects = *ptr; } } } - /// This function generates only one Effect. - /// Storage UInt32 for the new effect name/handle. - - public void GenEffects(out int effect) + /// Generates one or more effect objects. + /// Number of Effect object identifiers to generate. + /// + /// The GenEffects function is used to create one or more Effect objects. An Effect object stores an effect type and a set of parameter values to control that Effect. In order to use an Effect it must be attached to an Auxiliary Effect Slot object. + /// After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti. + /// + public int[] GenEffects(int n) { - uint temp; - GenEffects(out temp); - effect = (int)temp; + if (n <= 0) throw new ArgumentOutOfRangeException("n", "Must be higher than 0."); + int[] effects = new int[n]; + GenEffects(n, out effects[0]); + return effects; } - - /// This function generates only one Effect. - /// Storage UInt32 for the new effect name/handle. - public int GenEffects() + /// Generates a single effect object. + /// A handle to the generated effect object. + /// + /// The GenEffects function is used to create one or more Effect objects. An Effect object stores an effect type and a set of parameter values to control that Effect. In order to use an Effect it must be attached to an Auxiliary Effect Slot object. + /// After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti. + /// + public int GenEffect() { - uint temp; - GenEffects(out temp); - return (int)temp; + int temp; + GenEffects(1, out temp); + return temp; } #endregion alGenEffects