using UnityEngine; using Unheimlich.Gameplay.Player; namespace Unheimlich.Audio { public class DiapasonDebugger : MonoBehaviour { [Header("Debug Display")] [SerializeField] private bool _showDebugInfo = true; [SerializeField] private bool _showGizmos = true; [SerializeField] private Color _listeningRangeColor = Color.cyan; [SerializeField] private Color _activeTargetColor = Color.green; private DiapasonListeningHandler _listeningHandler; private AudioListenable[] _allListenables; private void Awake() { _listeningHandler = DiapasonListeningHandler.Instance; } private void Start() { RefreshListenablesList(); } private void OnGUI() { if (!_showDebugInfo || _listeningHandler == null) return; GUILayout.BeginArea(new Rect(10, 10, 300, 200)); GUILayout.Box("Diapason System Debug"); GUILayout.Label($"Is Listening: {_listeningHandler.IsListening}"); GUILayout.Label($"Is Concentrating: {_listeningHandler.IsConcentrating}"); if (_allListenables != null) GUILayout.Label($"Total Listenables: {_allListenables.Length}"); if (GUILayout.Button("Refresh Listenables List")) RefreshListenablesList(); if (GUILayout.Button("Toggle Debug Gizmos")) _showGizmos = !_showGizmos; GUILayout.EndArea(); } private void RefreshListenablesList() { _allListenables = FindObjectsByType(FindObjectsSortMode.None); if (!_showDebugInfo) return; Debug.Log($"Found {_allListenables.Length} AudioListenable objects in scene"); } private void OnDrawGizmos() { if (!_showGizmos) return; if (_allListenables == null) _allListenables = FindObjectsByType(FindObjectsSortMode.None); foreach (AudioListenable listenable in _allListenables) { if (listenable == null) continue; Gizmos.color = _listeningRangeColor; Gizmos.DrawIcon(listenable.transform.position, "sv_icon_dot3_pix16_gizmo", true); Gizmos.color = new Color(_listeningRangeColor.r, _listeningRangeColor.g, _listeningRangeColor.b, 0.1f); Gizmos.DrawSphere(listenable.transform.position, 0.2f); } if (_listeningHandler != null && _listeningHandler.IsListening) { Gizmos.color = _activeTargetColor; } } [ContextMenu("List All Listenables")] private void ListAllListenables() { RefreshListenablesList(); Debug.Log("=== Audio Listenables in Scene ==="); foreach (AudioListenable listenable in _allListenables) { if (listenable != null) Debug.Log($"- {listenable.gameObject.name} (Type: {listenable.GetType().Name})"); } } [ContextMenu("Enable All Listenables")] private void EnableAllListenables() { RefreshListenablesList(); foreach (AudioListenable listenable in _allListenables) { if (listenable != null) listenable.enabled = true; } Debug.Log("Enabled all AudioListenable components"); } [ContextMenu("Disable All Listenables")] private void DisableAllListenables() { RefreshListenablesList(); foreach (AudioListenable listenable in _allListenables) { if (listenable != null) listenable.enabled = false; } Debug.Log("Disabled all AudioListenable components"); } } }