Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Audio/AudioEmitter.cs
158 lines | 3.1 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;
using System.Runtime.InteropServices;
#endregion
namespace Microsoft.Xna.Framework.Audio
{
// http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.audioemitter.aspx
public class AudioEmitter
{
#region Public Properties
public float DopplerScale
{
get
{
return emitterData.DopplerScaler;
}
set
{
if (value < 0.0f)
{
throw new ArgumentOutOfRangeException("AudioEmitter.DopplerScale must be greater than or equal to 0.0f");
}
emitterData.DopplerScaler = value;
}
}
public Vector3 Forward
{
get
{
return new Vector3(
emitterData.OrientFront.x,
emitterData.OrientFront.y,
-emitterData.OrientFront.z
);
}
set
{
emitterData.OrientFront.x = value.X;
emitterData.OrientFront.y = value.Y;
emitterData.OrientFront.z = -value.Z;
}
}
public Vector3 Position
{
get
{
return new Vector3(
emitterData.Position.x,
emitterData.Position.y,
-emitterData.Position.z
);
}
set
{
emitterData.Position.x = value.X;
emitterData.Position.y = value.Y;
emitterData.Position.z = -value.Z;
}
}
public Vector3 Up
{
get
{
return new Vector3(
emitterData.OrientTop.x,
emitterData.OrientTop.y,
-emitterData.OrientTop.z
);
}
set
{
emitterData.OrientTop.x = value.X;
emitterData.OrientTop.y = value.Y;
emitterData.OrientTop.z = -value.Z;
}
}
public Vector3 Velocity
{
get
{
return new Vector3(
emitterData.Velocity.x,
emitterData.Velocity.y,
-emitterData.Velocity.z
);
}
set
{
emitterData.Velocity.x = value.X;
emitterData.Velocity.y = value.Y;
emitterData.Velocity.z = -value.Z;
}
}
#endregion
#region Internal Variables
internal FAudio.F3DAUDIO_EMITTER emitterData;
#endregion
#region Private Static Variables
private static readonly float[] stereoAzimuth = new float[]
{
0.0f, 0.0f
};
private static readonly GCHandle stereoAzimuthHandle = GCHandle.Alloc(
stereoAzimuth,
GCHandleType.Pinned
);
#endregion
#region Public Constructor
public AudioEmitter()
{
emitterData = new FAudio.F3DAUDIO_EMITTER();
DopplerScale = 1.0f;
Forward = Vector3.Forward;
Position = Vector3.Zero;
Up = Vector3.Up;
Velocity = Vector3.Zero;
/* Unused variables, defaults based on XNA behavior */
emitterData.pCone = IntPtr.Zero;
emitterData.ChannelCount = 1;
emitterData.ChannelRadius = 1.0f;
emitterData.pChannelAzimuths = stereoAzimuthHandle.AddrOfPinnedObject();
emitterData.pVolumeCurve = IntPtr.Zero;
emitterData.pLFECurve = IntPtr.Zero;
emitterData.pLPFDirectCurve = IntPtr.Zero;
emitterData.pLPFReverbCurve = IntPtr.Zero;
emitterData.pReverbCurve = IntPtr.Zero;
emitterData.CurveDistanceScaler = 1.0f;
}
#endregion
}
}