| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using UnityEngine;
 
- namespace EnhancedHierarchy.Icons {
 
-     public sealed class Warnings : IconBase {
 
-         private const int MAX_STRING_LEN = 750;
 
-         private const float ICONS_WIDTH = 16f;
 
-         public static StringBuilder goLogs = new StringBuilder(MAX_STRING_LEN);
 
-         public static StringBuilder goWarnings = new StringBuilder(MAX_STRING_LEN);
 
-         public static StringBuilder goErrors = new StringBuilder(MAX_STRING_LEN);
 
-         private static readonly GUIContent tempTooltipContent = new GUIContent();
 
-         private LogEntry log;
 
-         private LogEntry warning;
 
-         private LogEntry error;
 
-         public override string Name { get { return "Logs, Warnings and Errors"; } }
 
-         public override float Width {
 
-             get {
 
-                 var result = 0f;
 
-                 if (goLogs.Length > 0)
 
-                     result += ICONS_WIDTH;
 
-                 if (goWarnings.Length > 0)
 
-                     result += ICONS_WIDTH;
 
-                 if (goErrors.Length > 0)
 
-                     result += ICONS_WIDTH;
 
-                 return result;
 
-             }
 
-         }
 
-         public override Texture2D PreferencesPreview { get { return Styles.warningIcon; } }
 
-         //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }
 
-         public override void Init() {
 
-             if (!EnhancedHierarchy.IsGameObject)
 
-                 return;
 
-             log = null;
 
-             warning = null;
 
-             error = null;
 
-             goLogs.Length = 0;
 
-             goWarnings.Length = 0;
 
-             goErrors.Length = 0;
 
-             var contextEntries = (List<LogEntry>)null;
 
-             var components = EnhancedHierarchy.Components;
 
-             for (var i = 0; i < components.Count; i++)
 
-                 if (!components[i])
 
-                     goWarnings.AppendLine("Missing MonoBehaviour\n");
 
-             foreach (var entry in LogEntry.compileEntries
 
-                     .Where(entry => entry.ClassType != null)
 
-                     .Where(entry => EnhancedHierarchy.Components
 
-                         .Any(comp => comp && (comp.GetType() == entry.ClassType || comp.GetType().IsAssignableFrom(entry.ClassType))))) {
 
-                 var isWarning = entry.HasMode(EntryMode.ScriptCompileWarning | EntryMode.AssetImportWarning);
 
-                 if (goWarnings.Length < MAX_STRING_LEN && isWarning)
 
-                     goWarnings.AppendLine(entry.ToString());
 
-                 else if (goErrors.Length < MAX_STRING_LEN && !isWarning)
 
-                     goErrors.AppendLine(entry.ToString());
 
-                 if (isWarning && warning == null && !string.IsNullOrEmpty(entry.File))
 
-                     warning = entry;
 
-                 if (!isWarning && error == null && !string.IsNullOrEmpty(entry.File))
 
-                     error = entry;
 
-             }
 
-             if (LogEntry.gameObjectEntries.TryGetValue(EnhancedHierarchy.CurrentGameObject, out contextEntries))
 
-                 for (var i = 0; i < contextEntries.Count; i++) {
 
-                     var entry = contextEntries[i];
 
-                     var isLog = entry.HasMode(EntryMode.ScriptingLog);
 
-                     var isWarning = entry.HasMode(EntryMode.ScriptingWarning);
 
-                     var isError = entry.HasMode(EntryMode.ScriptingError | EntryMode.ScriptingException | EntryMode.ScriptingAssertion);
 
-                     if (isLog && goLogs.Length < MAX_STRING_LEN)
 
-                         goLogs.AppendLine(entry.ToString());
 
-                     else if (isWarning && goWarnings.Length < MAX_STRING_LEN)
 
-                         goWarnings.AppendLine(entry.ToString());
 
-                     else if (isError && goErrors.Length < MAX_STRING_LEN)
 
-                         goErrors.AppendLine(entry.ToString());
 
-                     if (isLog && log == null && !string.IsNullOrEmpty(entry.File))
 
-                         log = entry;
 
-                     if (isWarning && warning == null && !string.IsNullOrEmpty(entry.File))
 
-                         warning = entry;
 
-                     if (isError && error == null && !string.IsNullOrEmpty(entry.File))
 
-                         error = entry;
 
-                 }
 
-         }
 
-         public override void DoGUI(Rect rect) {
 
-             if ((!EnhancedHierarchy.IsRepaintEvent && !Preferences.OpenScriptsOfLogs) || !EnhancedHierarchy.IsGameObject)
 
-                 return;
 
-             rect.xMax = rect.xMin + 17f;
 
-             rect.yMax += 1f;
 
-             DoSingleGUI(ref rect, goLogs, Styles.infoIcon, log);
 
-             DoSingleGUI(ref rect, goWarnings, Styles.warningIcon, warning);
 
-             DoSingleGUI(ref rect, goErrors, Styles.errorIcon, error);
 
-         }
 
-         private void DoSingleGUI(ref Rect rect, StringBuilder str, Texture2D icon, LogEntry entry) {
 
-             if (str.Length == 0)
 
-                 return;
 
-             if (Utility.ShouldCalculateTooltipAt(rect))
 
-                 tempTooltipContent.tooltip = Preferences.Tooltips ? str.ToString().TrimEnd('\n', '\r') : string.Empty;
 
-             tempTooltipContent.image = icon;
 
-             if (GUI.Button(rect, tempTooltipContent, Styles.iconButton))
 
-                 if (entry != null)
 
-                     entry.OpenToEdit();
 
-             rect.x += ICONS_WIDTH;
 
-         }
 
-     }
 
- }
 
 
  |