Code/DspVolume.cs
using Sandbox;
using Sandbox.Audio;

[Title( "Dsp Volume" )]
[Group( "Audio" )]
public class DspVolume : Sandbox.Volumes.VolumeComponent
{
	[Property]
	public DspPresetHandle Dsp { get; set; }

	[Property]
	public MixerHandle TargetMixer { get; set; } = new MixerHandle { Name = "Game" };

	[Property]
	public int Priority { get; set; }


	protected override void OnEnabled()
	{
		base.OnEnabled();

		Scene.GetSystem<DspVolumeGameSystem>().Add( this );
	}

	protected override void OnDisabled()
	{
		base.OnDisabled();

		Scene.GetSystem<DspVolumeGameSystem>().Remove( this );
	}

	/// <summary>
	/// Prefer higher priority volumes, and if priorities are the same, we prefer smaller volumes.
	/// </summary>
	public override float GetPriority()
	{
		return Priority + base.GetPriority();
	}
}