Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Audio/AudioCategory.cs
144 lines | 2.4 KiB | text/x-csharp | CSharpLexer
#region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
* Copyright 2009-2020 Ethan Lee and the MonoGame Team
*
* Released under the Microsoft Public License.
* See LICENSE for details.
*/
#endregion
#region Using Statements
using System;
#endregion
namespace Microsoft.Xna.Framework.Audio
{
// http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.audiocategory.aspx
public struct AudioCategory : IEquatable<AudioCategory>
{
#region Public Properties
private string INTERNAL_name;
public string Name
{
get
{
return INTERNAL_name;
}
}
#endregion
#region Private Variables
private AudioEngine parent;
private ushort index;
#endregion
#region Internal Constructor
internal AudioCategory(
AudioEngine engine,
ushort category,
string name
) {
parent = engine;
index = category;
INTERNAL_name = name;
}
#endregion
#region Public Methods
public void Pause()
{
lock (parent.gcSync)
{
if (parent.IsDisposed)
{
return;
}
FAudio.FACTAudioEngine_Pause(parent.handle, index, 1);
}
}
public void Resume()
{
lock (parent.gcSync)
{
if (parent.IsDisposed)
{
return;
}
FAudio.FACTAudioEngine_Pause(parent.handle, index, 0);
}
}
public void SetVolume(float volume)
{
lock (parent.gcSync)
{
if (parent.IsDisposed)
{
return;
}
FAudio.FACTAudioEngine_SetVolume(parent.handle, index, volume);
}
}
public void Stop(AudioStopOptions options)
{
lock (parent.gcSync)
{
if (parent.IsDisposed)
{
return;
}
FAudio.FACTAudioEngine_Stop(
parent.handle,
index,
(options == AudioStopOptions.Immediate) ?
FAudio.FACT_FLAG_STOP_IMMEDIATE :
FAudio.FACT_FLAG_STOP_RELEASE
);
}
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
public bool Equals(AudioCategory other)
{
return (GetHashCode() == other.GetHashCode());
}
public override bool Equals(Object obj)
{
if (obj is AudioCategory)
{
return Equals((AudioCategory) obj);
}
return false;
}
public static bool operator ==(
AudioCategory value1,
AudioCategory value2
) {
return value1.Equals(value2);
}
public static bool operator !=(
AudioCategory value1,
AudioCategory value2
) {
return !(value1.Equals(value2));
}
#endregion
}
}