Show More
Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
FNA/src/Audio/AudioEmitter.cs
158 lines | 3.1 KiB | text/x-csharp | CSharpLexer
Early working version (including all dependencies, lol).
r0 #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
}
}