2022-02-23 05:14:32 +00:00
|
|
|
|
using System;
|
2021-02-27 00:17:26 +00:00
|
|
|
|
using MoonWorks.Math;
|
|
|
|
|
|
|
|
|
|
namespace MoonWorks.Audio
|
|
|
|
|
{
|
2022-02-23 05:14:32 +00:00
|
|
|
|
public class AudioListener : AudioResource
|
|
|
|
|
{
|
|
|
|
|
internal FAudio.F3DAUDIO_LISTENER listenerData;
|
2021-02-27 00:17:26 +00:00
|
|
|
|
|
|
|
|
|
public Vector3 Forward
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return new Vector3(
|
|
|
|
|
listenerData.OrientFront.x,
|
|
|
|
|
listenerData.OrientFront.y,
|
|
|
|
|
-listenerData.OrientFront.z
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
listenerData.OrientFront.x = value.X;
|
|
|
|
|
listenerData.OrientFront.y = value.Y;
|
|
|
|
|
listenerData.OrientFront.z = -value.Z;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Vector3 Position
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return new Vector3(
|
|
|
|
|
listenerData.Position.x,
|
|
|
|
|
listenerData.Position.y,
|
|
|
|
|
-listenerData.Position.z
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
listenerData.Position.x = value.X;
|
|
|
|
|
listenerData.Position.y = value.Y;
|
|
|
|
|
listenerData.Position.z = -value.Z;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Vector3 Up
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return new Vector3(
|
|
|
|
|
listenerData.OrientTop.x,
|
|
|
|
|
listenerData.OrientTop.y,
|
|
|
|
|
-listenerData.OrientTop.z
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
listenerData.OrientTop.x = value.X;
|
|
|
|
|
listenerData.OrientTop.y = value.Y;
|
|
|
|
|
listenerData.OrientTop.z = -value.Z;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Vector3 Velocity
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return new Vector3(
|
|
|
|
|
listenerData.Velocity.x,
|
|
|
|
|
listenerData.Velocity.y,
|
|
|
|
|
-listenerData.Velocity.z
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
listenerData.Velocity.x = value.X;
|
|
|
|
|
listenerData.Velocity.y = value.Y;
|
|
|
|
|
listenerData.Velocity.z = -value.Z;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-23 05:14:32 +00:00
|
|
|
|
public AudioListener(AudioDevice device) : base(device)
|
|
|
|
|
{
|
|
|
|
|
listenerData = new FAudio.F3DAUDIO_LISTENER();
|
|
|
|
|
Forward = Vector3.Forward;
|
|
|
|
|
Position = Vector3.Zero;
|
|
|
|
|
Up = Vector3.Up;
|
|
|
|
|
Velocity = Vector3.Zero;
|
2021-02-27 00:17:26 +00:00
|
|
|
|
|
2022-02-23 05:14:32 +00:00
|
|
|
|
/* Unexposed variables, defaults based on XNA behavior */
|
2021-02-27 00:17:26 +00:00
|
|
|
|
listenerData.pCone = IntPtr.Zero;
|
2022-02-23 05:14:32 +00:00
|
|
|
|
}
|
2021-02-27 00:17:26 +00:00
|
|
|
|
|
2022-02-23 05:14:32 +00:00
|
|
|
|
protected override void Destroy() { }
|
|
|
|
|
}
|
2021-02-27 00:17:26 +00:00
|
|
|
|
}
|