add SourceVoice.Apply3D
parent
9a854506f3
commit
8d5ac8e17b
|
@ -139,6 +139,41 @@ namespace MoonWorks.Audio
|
||||||
Submit(buffer.ToFAudioBuffer());
|
Submit(buffer.ToFAudioBuffer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public unsafe void Apply3D(AudioListener listener, AudioEmitter emitter)
|
||||||
|
{
|
||||||
|
Is3D = true;
|
||||||
|
|
||||||
|
emitter.emitterData.CurveDistanceScaler = Device.CurveDistanceScalar;
|
||||||
|
emitter.emitterData.ChannelCount = SourceChannelCount;
|
||||||
|
|
||||||
|
var dspSettings = new FAudio.F3DAUDIO_DSP_SETTINGS
|
||||||
|
{
|
||||||
|
DopplerFactor = DopplerFactor,
|
||||||
|
SrcChannelCount = SourceChannelCount,
|
||||||
|
DstChannelCount = DestinationChannelCount,
|
||||||
|
pMatrixCoefficients = (nint) pMatrixCoefficients
|
||||||
|
};
|
||||||
|
|
||||||
|
FAudio.F3DAudioCalculate(
|
||||||
|
Device.Handle3D,
|
||||||
|
ref listener.listenerData,
|
||||||
|
ref emitter.emitterData,
|
||||||
|
FAudio.F3DAUDIO_CALCULATE_MATRIX | FAudio.F3DAUDIO_CALCULATE_DOPPLER,
|
||||||
|
ref dspSettings
|
||||||
|
);
|
||||||
|
|
||||||
|
UpdatePitch();
|
||||||
|
|
||||||
|
FAudio.FAudioVoice_SetOutputMatrix(
|
||||||
|
Handle,
|
||||||
|
OutputVoice.Handle,
|
||||||
|
SourceChannelCount,
|
||||||
|
DestinationChannelCount,
|
||||||
|
(nint) pMatrixCoefficients,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Specifies that this source voice can be returned to the voice pool.
|
/// Specifies that this source voice can be returned to the voice pool.
|
||||||
/// Holding on to the reference after calling this will cause problems!
|
/// Holding on to the reference after calling this will cause problems!
|
||||||
|
|
|
@ -12,10 +12,10 @@ namespace MoonWorks.Audio
|
||||||
public uint SourceChannelCount { get; }
|
public uint SourceChannelCount { get; }
|
||||||
public uint DestinationChannelCount { get; }
|
public uint DestinationChannelCount { get; }
|
||||||
|
|
||||||
private SubmixVoice OutputVoice;
|
protected SubmixVoice OutputVoice;
|
||||||
private ReverbEffect ReverbEffect;
|
private ReverbEffect ReverbEffect;
|
||||||
|
|
||||||
byte* pMatrixCoefficients;
|
protected byte* pMatrixCoefficients;
|
||||||
|
|
||||||
public bool Is3D { get; protected set; }
|
public bool Is3D { get; protected set; }
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ namespace MoonWorks.Audio
|
||||||
SetOutputVoice(Device.MasteringVoice);
|
SetOutputVoice(Device.MasteringVoice);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdatePitch()
|
protected void UpdatePitch()
|
||||||
{
|
{
|
||||||
float doppler;
|
float doppler;
|
||||||
float dopplerScale = Device.DopplerScale;
|
float dopplerScale = Device.DopplerScale;
|
||||||
|
|
Loading…
Reference in New Issue