using System; using System.Reflection; using UnityEditor; namespace WoLfulus.LineEnding { public static class LogEntry { public static object instance = null; public static string condition { get { return (string)_condition.GetValue(instance); } } public static int errorNum { get { return (int)_errorNum.GetValue(instance); } } public static string file { get { return (string)_file.GetValue(instance); } } public static int line { get { return (int)_line.GetValue(instance); } } public static Mode mode { get { return (Mode)((int)_mode.GetValue(instance)); } } public static int instanceID { get { return (int)_instanceID.GetValue(instance); } } public static int identifier { get { return (int)_identifier.GetValue(instance); } } public static int isWorldPlaying { get { return (int)_isWorldPlaying.GetValue(instance); } } private static Type _type = null; private static FieldInfo _condition; private static FieldInfo _errorNum; private static FieldInfo _file; private static FieldInfo _line; private static FieldInfo _mode; private static FieldInfo _instanceID; private static FieldInfo _identifier; private static FieldInfo _isWorldPlaying; static LogEntry() { Initialize(); } static void Initialize() { if (_type == null) { var flags = BindingFlags.Instance | BindingFlags.Public; var assembly = Assembly.GetAssembly(typeof(Editor)); _type = assembly.GetType("UnityEditorInternal.LogEntry"); if (_type == null) // 2017 Fix { _type = assembly.GetType("UnityEditor.LogEntry"); } _condition = _type.GetField("condition", flags); _errorNum = _type.GetField("errorNum", flags); _file = _type.GetField("file", flags); _line = _type.GetField("line", flags); _mode = _type.GetField("mode", flags); _instanceID = _type.GetField("instanceID", flags); _identifier = _type.GetField("identifier", flags); _isWorldPlaying = _type.GetField("isWorldPlaying", flags); instance = Activator.CreateInstance(_type); } } } }