105 lines
3.4 KiB
C#
105 lines
3.4 KiB
C#
using UnityEngine;
|
|
|
|
namespace Photon.Voice.Unity.UtilityScripts
|
|
{
|
|
[RequireComponent(typeof(Recorder))]
|
|
public class MicAmplifier : VoiceComponent
|
|
{
|
|
[SerializeField]
|
|
private float boostValue;
|
|
|
|
[SerializeField]
|
|
private float amplificationFactor = 1f;
|
|
|
|
public float AmplificationFactor
|
|
{
|
|
get { return this.amplificationFactor; }
|
|
set
|
|
{
|
|
if (this.amplificationFactor.Equals(value))
|
|
{
|
|
return;
|
|
}
|
|
this.amplificationFactor = value;
|
|
if (this.floatProcessor != null)
|
|
{
|
|
this.floatProcessor.AmplificationFactor = this.amplificationFactor;
|
|
}
|
|
if (this.shortProcessor != null)
|
|
{
|
|
this.shortProcessor.AmplificationFactor = (short)this.amplificationFactor;
|
|
}
|
|
}
|
|
}
|
|
|
|
public float BoostValue
|
|
{
|
|
get { return this.boostValue; }
|
|
set
|
|
{
|
|
if (this.boostValue.Equals(value))
|
|
{
|
|
return;
|
|
}
|
|
this.boostValue = value;
|
|
if (this.floatProcessor != null)
|
|
{
|
|
this.floatProcessor.BoostValue = this.boostValue;
|
|
}
|
|
if (this.shortProcessor != null)
|
|
{
|
|
this.shortProcessor.BoostValue = (short)this.boostValue;
|
|
}
|
|
}
|
|
}
|
|
|
|
private MicAmplifierFloat floatProcessor;
|
|
private MicAmplifierShort shortProcessor;
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (this.floatProcessor != null)
|
|
{
|
|
this.floatProcessor.Disabled = false;
|
|
}
|
|
if (this.shortProcessor != null)
|
|
{
|
|
this.shortProcessor.Disabled = false;
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (this.floatProcessor != null)
|
|
{
|
|
this.floatProcessor.Disabled = true;
|
|
}
|
|
if (this.shortProcessor != null)
|
|
{
|
|
this.shortProcessor.Disabled = true;
|
|
}
|
|
}
|
|
|
|
// Message sent by Recorder
|
|
private void PhotonVoiceCreated(PhotonVoiceCreatedParams p)
|
|
{
|
|
if (p.Voice is LocalVoiceAudioFloat)
|
|
{
|
|
LocalVoiceAudioFloat v = p.Voice as LocalVoiceAudioFloat;
|
|
this.floatProcessor = new MicAmplifierFloat(this.AmplificationFactor, this.BoostValue);
|
|
v.AddPostProcessor(this.floatProcessor);
|
|
}
|
|
else if (p.Voice is LocalVoiceAudioShort)
|
|
{
|
|
LocalVoiceAudioShort v = p.Voice as LocalVoiceAudioShort;
|
|
this.shortProcessor = new MicAmplifierShort((short)this.AmplificationFactor, (short)this.BoostValue);
|
|
//this.shortProcessor = new SimpleAmplifierShortProcessor((short)(this.AmplificationFactor* short.MaxValue), (short)(this.boostValue * short.MaxValue));
|
|
v.AddPostProcessor(this.shortProcessor);
|
|
}
|
|
else if (this.Logger.IsErrorEnabled)
|
|
{
|
|
this.Logger.LogError("LocalVoice object has unexpected value/type: {0}", p.Voice == null ? "null" : p.Voice.GetType().ToString());
|
|
}
|
|
}
|
|
}
|
|
} |