using UnityEngine; namespace DarkTonic.MasterAudio { public static class SpatializerHelper { private const string OculusSpatializer = "OculusSpatializer"; private const string ResonanceAudioSpatializer = "Resonance Audio"; private const string SteamAudioSpatializer = "Steam Audio Spatializer"; private const string MetaXrSpatializer = "Meta XR Audio"; public static bool IsSupportedSpatializer => SelectedSpatializer switch { "OculusSpatializer" => true, "Resonance Audio" => true, "Steam Audio Spatializer" => true, "Meta XR Audio" => true, _ => false, }; public static bool IsOculusAudioSpatializer => SelectedSpatializer == "OculusSpatializer"; public static bool IsResonanceAudioSpatializer => SelectedSpatializer == "Resonance Audio"; public static bool IsSteamAudioSpatializer => SelectedSpatializer == "Steam Audio Spatializer"; public static bool IsMetaXrSpatializer => SelectedSpatializer == "Meta XR Audio"; public static string SelectedSpatializer => AudioSettings.GetSpatializerPluginName(); public static void TurnOnSpatializerIfEnabled(AudioSource source) { if (MasterAudio.SafeInstance == null) { SetSpatializerToggleOnSource(source, enabled: false); return; } if (!MasterAudio.Instance.useSpatializer) { SetSpatializerToggleOnSource(source, enabled: false); return; } SetSpatializerToggleOnSource(source, enabled: true); if (ResonanceAudioHelper.ResonanceAudioOptionExists && SteamAudioHelper.SteamAudioOptionExists && MasterAudio.Instance.useSpatializerPostFX) { source.spatializePostEffects = true; } } private static void SetSpatializerToggleOnSource(AudioSource source, bool enabled) { if (enabled) { enabled = source.spatialBlend != 0f; } source.spatialize = enabled; } } }