| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							- using System.Collections.Generic;
 
- using UnityEditor;
 
- using UnityEditor.AnimatedValues;
 
- using UnityEngine;
 
- namespace EnhancedHierarchy.Icons {
 
-     public sealed class SoundIcon : IconBase {
 
-         private static AudioSource audioSource;
 
-         private static AnimBool currentAnim;
 
-         private static readonly Dictionary<AudioSource, AnimBool> sourcesAnim = new Dictionary<AudioSource, AnimBool>();
 
-         private static Texture icon;
 
-         public override string Name { get { return "Audio Source Icon"; } }
 
-         public override float Width {
 
-             get {
 
-                 if (audioSource == null || currentAnim == null)
 
-                     return 0f;
 
-                 return currentAnim.faded * (base.Width - 2f);
 
-             }
 
-         }
 
-         public override Texture2D PreferencesPreview { get { return AssetPreview.GetMiniTypeThumbnail(typeof(AudioSource)); } }
 
-         //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }
 
-         static SoundIcon() {
 
-             EditorApplication.update += () => {
 
-                 if (!Preferences.IsButtonEnabled(new SoundIcon()))
 
-                     return;
 
-                 foreach (var kvp in sourcesAnim)
 
-                     if (kvp.Key && kvp.Value != null)
 
-                         kvp.Value.target = kvp.Key.isPlaying;
 
-             };
 
-         }
 
-         public override void Init() {
 
-             if (!EnhancedHierarchy.IsGameObject)
 
-                 return;
 
-             var comps = EnhancedHierarchy.Components;
 
-             audioSource = null;
 
-             for (var i = 0; i < comps.Count; i++)
 
-                 if (comps[i] is AudioSource) {
 
-                     audioSource = comps[i] as AudioSource;
 
-                     break;
 
-                 }
 
-             if (!audioSource)
 
-                 return;
 
-             if (!sourcesAnim.TryGetValue(audioSource, out currentAnim)) {
 
-                 sourcesAnim[audioSource] = currentAnim = new AnimBool(audioSource.isPlaying);
 
-                 currentAnim.valueChanged.AddListener(EditorApplication.RepaintHierarchyWindow);
 
-             }
 
-         }
 
-         public override void DoGUI(Rect rect) {
 
-             if (!EnhancedHierarchy.IsRepaintEvent || !EnhancedHierarchy.IsGameObject || !audioSource || Width <= 1f)
 
-                 return;
 
-             using(ProfilerSample.Get()) {
 
-                 if (!icon)
 
-                     icon = EditorGUIUtility.ObjectContent(null, typeof(AudioSource)).image;
 
-                 rect.yMax -= 1f;
 
-                 rect.yMin += 1f;
 
-                 GUI.DrawTexture(rect, icon, ScaleMode.StretchToFill);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |