The BepInEx console will not appear when launching like it does for other games on Thunderstore. This is normal (and helps prevent crashes during startup). You can turn it back on in your BepInEx.cfg file.
Decompiled source of UnityExplorer v4.12.3
plugins/sinai-dev-UnityExplorer/UnityExplorer.BIE5.Mono.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Diagnostics.SymbolStore; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Xml; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Mono.CSharp; using Mono.CSharp.IL2CPP; using Mono.CSharp.Linq; using Mono.CSharp.Nullable; using Mono.CSharp.yyParser; using Mono.CSharp.yydebug; using Mono.CompilerServices.SymbolWriter; using MonoMod.RuntimeDetour; using Tomlet; using Tomlet.Attributes; using Tomlet.Exceptions; using Tomlet.Models; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; using UnityExplorer.CSConsole; using UnityExplorer.CSConsole.Lexers; using UnityExplorer.CacheObject; using UnityExplorer.CacheObject.IValues; using UnityExplorer.CacheObject.Views; using UnityExplorer.Config; using UnityExplorer.Hooks; using UnityExplorer.Inspectors; using UnityExplorer.Inspectors.MouseInspectors; using UnityExplorer.Loader.BIE; using UnityExplorer.ObjectExplorer; using UnityExplorer.Runtime; using UnityExplorer.UI; using UnityExplorer.UI.Panels; using UnityExplorer.UI.Widgets; using UnityExplorer.UI.Widgets.AutoComplete; using UniverseLib; using UniverseLib.Config; using UniverseLib.Input; using UniverseLib.Runtime; using UniverseLib.UI; using UniverseLib.UI.Models; using UniverseLib.UI.ObjectPool; using UniverseLib.UI.Panels; using UniverseLib.UI.Widgets; using UniverseLib.UI.Widgets.ButtonList; using UniverseLib.UI.Widgets.ScrollView; using UniverseLib.Utility; [assembly: AssemblyTitle("UnityExplorer")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: ComVisible(false)] [assembly: Guid("b21dbde3-5d6f-4726-93ab-cc3cc68bae7d")] [assembly: AssemblyFileVersion("4.12.3")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCompany("Sinai, yukieiji")] [assembly: AssemblyProduct("UnityExplorer")] [assembly: AssemblyCopyright("")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.12.3.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [<c5f835c3-ca1e-47b0-82d8-ded878b89550>Embedded] internal sealed class <c5f835c3-ca1e-47b0-82d8-ded878b89550>EmbeddedAttribute : System.Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [<c5f835c3-ca1e-47b0-82d8-ded878b89550>Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class <4a56e098-d11c-48ef-93e8-5722892b15a7>NullableAttribute : Attribute { public readonly byte[] NullableFlags; public <4a56e098-d11c-48ef-93e8-5722892b15a7>NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public <4a56e098-d11c-48ef-93e8-5722892b15a7>NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [<c5f835c3-ca1e-47b0-82d8-ded878b89550>Embedded] [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class <89700e04-3ad5-4ec3-80e0-db652069522c>NullableContextAttribute : Attribute { public readonly byte Flag; public <89700e04-3ad5-4ec3-80e0-db652069522c>NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] [<c5f835c3-ca1e-47b0-82d8-ded878b89550>Embedded] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace UnityExplorer { public class ExplorerBehaviour : MonoBehaviour { internal bool quitting; internal static ExplorerBehaviour Instance { get; private set; } internal static void Setup() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown GameObject val = new GameObject("ExplorerBehaviour"); Object.DontDestroyOnLoad((Object)(object)val); ((Object)val).hideFlags = (HideFlags)61; Instance = val.AddComponent<ExplorerBehaviour>(); } internal void Update() { ExplorerCore.Update(); } internal void OnDestroy() { OnApplicationQuit(); } internal void OnApplicationQuit() { if (!quitting) { quitting = true; if (Object.op_Implicit((Object)(object)UIManager.UIRoot)) { TryDestroy(((Component)UIManager.UIRoot.transform.root).gameObject); } object? value = typeof(Universe).Assembly.GetType("UniverseLib.UniversalBehaviour").GetProperty("Instance", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null, null); TryDestroy(((Component)((value is Component) ? value : null)).gameObject); TryDestroy(((Component)this).gameObject); } } internal void TryDestroy(GameObject obj) { try { if (Object.op_Implicit((Object)(object)obj)) { Object.Destroy((Object)(object)obj); } } catch (Exception ex) { ExplorerCore.LogError("Destroy Error!! " + ex.Message); } } } public static class ExplorerCore { public const string NAME = "UnityExplorer"; public const string VERSION = "4.12.3"; public const string AUTHOR = "Sinai, yukieiji"; public const string GUID = "com.sinai.unityexplorer"; public const string DEFAULT_EXPLORER_FOLDER_NAME = "sinai-dev-UnityExplorer"; public static IExplorerLoader Loader { get; private set; } public static string ExplorerFolder => Path.Combine(Loader.ExplorerFolderDestination, Loader.ExplorerFolderName); public static Harmony Harmony { get; } = new Harmony("com.sinai.unityexplorer"); public static void Init(IExplorerLoader loader) { //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) if (Loader != null) { throw new Exception("UnityExplorer is already loaded."); } Loader = loader; Log("UnityExplorer 4.12.3 initializing..."); CheckLegacyExplorerFolder(); Directory.CreateDirectory(ExplorerFolder); ConfigManager.Init(Loader.ConfigHandler); Universe.Init(ConfigManager.Startup_Delay_Time.Value, (Action)LateInit, (Action<string, LogType>)Log, new UniverseLibConfig { Disable_EventSystem_Override = ConfigManager.Disable_EventSystem_Override.Value, Force_Unlock_Mouse = ConfigManager.Force_Unlock_Mouse.Value, Unhollowed_Modules_Folder = loader.UnhollowedModulesFolder }); UERuntimeHelper.Init(); ExplorerBehaviour.Setup(); UnityCrashPrevention.Init(); } private static void LateInit() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) SceneHandler.Init(); Log("Creating UI..."); UIManager.InitUI(); Log(string.Format("{0} {1} ({2}) initialized.", "UnityExplorer", "4.12.3", Universe.Context)); } internal static void Update() { ExplorerKeybind.Update(); } public static void Log(object message) { Log(message, (LogType)3); } public static void LogWarning(object message) { Log(message, (LogType)2); } public static void LogError(object message) { Log(message, (LogType)0); } public static void LogUnity(object message, LogType logType) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) if (ConfigManager.Log_Unity_Debug.Value) { Log($"[Unity] {message}", logType); } } private static void Log(object message, LogType logType) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected I4, but got Unknown string text = message?.ToString() ?? ""; LogPanel.Log(text, logType); switch ((int)logType) { case 1: case 3: Loader.OnLogMessage(text); break; case 2: Loader.OnLogWarning(text); break; case 0: case 4: Loader.OnLogError(text); break; } } private static void CheckLegacyExplorerFolder() { string text = Path.Combine(Loader.ExplorerFolderDestination, "UnityExplorer"); if (!Directory.Exists(text)) { return; } LogWarning("Attempting to migrate old 'UnityExplorer/' folder to 'sinai-dev-UnityExplorer/'..."); if (!Directory.Exists(ExplorerFolder)) { try { Directory.Move(text, ExplorerFolder); Log("Migrated successfully."); return; } catch (Exception arg) { LogWarning($"Exception migrating folder: {arg}"); return; } } try { CopyAll(new DirectoryInfo(text), new DirectoryInfo(ExplorerFolder)); Directory.Delete(text, recursive: true); Log("Migrated successfully."); } catch (Exception arg2) { LogWarning($"Exception migrating folder: {arg2}"); } } public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { Directory.CreateDirectory(target.FullName); FileInfo[] files = source.GetFiles(); foreach (FileInfo fileInfo in files) { fileInfo.MoveTo(Path.Combine(target.ToString(), fileInfo.Name)); } DirectoryInfo[] directories = source.GetDirectories(); foreach (DirectoryInfo directoryInfo in directories) { DirectoryInfo target2 = target.CreateSubdirectory(directoryInfo.Name); CopyAll(directoryInfo, target2); } } } public static class ExplorerKeybind { public static void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) if (InputManager.GetKeyDown(ConfigManager.Master_Toggle.Value)) { UIManager.ShowMenu = !UIManager.ShowMenu; } TimeScaleKeyBindUpdate(); } private static void TimeScaleKeyBindUpdate() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) TimeScaleWidget instance = TimeScaleWidget.Instance; if (instance != null) { if (InputManager.GetKeyDown(ConfigManager.TIME_SCALE_TOGGLE.Value)) { instance.OnPauseButtonClicked(); } if (InputManager.GetKeyDown(ConfigManager.LOCK_TIME_SCALE_TO_ZERO.Value)) { instance.LockTo(0f); } if (InputManager.GetKeyDown(ConfigManager.LOCK_TIME_SCALE_TO_NORMAL.Value)) { instance.LockTo(1f); } if (InputManager.GetKeyDown(ConfigManager.LOCK_TIME_SCALE_TO_HALF.Value)) { instance.LockTo(instance.DesiredTime * 0.5f); } if (InputManager.GetKeyDown(ConfigManager.LOCK_TIME_SCALE_TO_DOUBLE.Value)) { instance.LockTo(instance.DesiredTime * 2f); } } } } public static class InspectorManager { public static readonly List<InspectorBase> Inspectors = new List<InspectorBase>(); private static InspectorBase lastActiveInspector; public static float PanelWidth; public static InspectorBase ActiveInspector { get; private set; } public static event Action OnInspectedTabsChanged; public static void Inspect(object obj, CacheObjectBase parent = null) { if (UnityHelpers.IsNullOrDestroyed(obj, true)) { return; } obj = ReflectionExtensions.TryCast(obj); if (!TryFocusActiveInspector(obj)) { if ((Object)(object)ReflectionExtensions.TryCast<GameObject>(obj) != (Object)null) { CreateInspector<GameObjectInspector>(obj); } else { CreateInspector<ReflectionInspector>(obj, staticReflection: false, parent); } } } public static void Inspect(Type type) { if (!TryFocusActiveInspector(type)) { CreateInspector<ReflectionInspector>(type, staticReflection: true); } } private static bool TryFocusActiveInspector(object target) { foreach (InspectorBase inspector in Inspectors) { bool flag = false; if (target is Type type) { if (inspector.TargetType.FullName == type.FullName) { flag = true; } } else if (ReflectionExtensions.ReferenceEqual(inspector.Target, target)) { flag = true; } if (flag) { UIManager.SetPanelActive(UIManager.Panels.Inspector, active: true); SetInspectorActive(inspector); return true; } } return false; } public static void SetInspectorActive(InspectorBase inspector) { UnsetActiveInspector(); ActiveInspector = inspector; inspector.OnSetActive(); } public static void UnsetActiveInspector() { if (ActiveInspector != null) { lastActiveInspector = ActiveInspector; ActiveInspector.OnSetInactive(); ActiveInspector = null; } } public static void CloseAllTabs() { if (Inspectors.Any()) { for (int num = Inspectors.Count - 1; num >= 0; num--) { Inspectors[num].CloseInspector(); } Inspectors.Clear(); } UIManager.SetPanelActive(UIManager.Panels.Inspector, active: false); } private static void CreateInspector<T>(object target, bool staticReflection = false, CacheObjectBase parent = null) where T : InspectorBase { T val = Pool<T>.Borrow(); Inspectors.Add(val); val.Target = target; if (parent != null && parent.CanWrite && target.GetType().IsValueType && val is ReflectionInspector reflectionInspector) { reflectionInspector.ParentCacheObject = parent; } UIManager.SetPanelActive(UIManager.Panels.Inspector, active: true); val.UIRoot.transform.SetParent(InspectorPanel.Instance.ContentHolder.transform, false); if (val is ReflectionInspector reflectionInspector2) { reflectionInspector2.StaticOnly = staticReflection; } val.OnBorrowedFromPool(target); SetInspectorActive(val); InspectorManager.OnInspectedTabsChanged?.Invoke(); } public static void ReleaseInspector<T>(T inspector) where T : InspectorBase { if (lastActiveInspector == inspector) { lastActiveInspector = null; } bool flag = ActiveInspector == inspector; int num = Inspectors.IndexOf(inspector); Inspectors.Remove(inspector); inspector.OnReturnToPool(); Pool<T>.Return(inspector); if (flag) { ActiveInspector = null; if (lastActiveInspector != null) { SetInspectorActive(lastActiveInspector); lastActiveInspector = null; } else if (Inspectors.Any()) { int index = Math.Min(Inspectors.Count - 1, Math.Max(0, num - 1)); SetInspectorActive(Inspectors[index]); } else { UIManager.SetPanelActive(UIManager.Panels.Inspector, active: false); } } InspectorManager.OnInspectedTabsChanged?.Invoke(); } internal static void Update() { for (int num = Inspectors.Count - 1; num >= 0; num--) { Inspectors[num].Update(); } } internal static void OnPanelResized(float width) { PanelWidth = width; foreach (InspectorBase inspector in Inspectors) { if (inspector is ReflectionInspector reflectionInspector) { reflectionInspector.SetLayouts(); } } } } [BepInPlugin("com.sinai.unityexplorer", "UnityExplorer", "4.12.3")] public class ExplorerBepInPlugin : BaseUnityPlugin, IExplorerLoader { public static ExplorerBepInPlugin Instance; private const string IL2CPP_LIBS_FOLDER = "interop"; private BepInExConfigHandler _configHandler; private static readonly Harmony s_harmony = new Harmony("com.sinai.unityexplorer"); public ManualLogSource LogSource => ((BaseUnityPlugin)this).Logger; public string UnhollowedModulesFolder => Path.Combine(Paths.BepInExRootPath, "interop"); public ConfigHandler ConfigHandler => _configHandler; public Harmony HarmonyInstance => s_harmony; public string ExplorerFolderName => "sinai-dev-UnityExplorer"; public string ExplorerFolderDestination => Paths.PluginPath; public Action<object> OnLogMessage => LogSource.LogMessage; public Action<object> OnLogWarning => LogSource.LogWarning; public Action<object> OnLogError => LogSource.LogError; private void Init() { Instance = this; _configHandler = new BepInExConfigHandler(); ExplorerCore.Init(this); } internal void Awake() { Init(); } } public interface IExplorerLoader { string ExplorerFolderDestination { get; } string ExplorerFolderName { get; } string UnhollowedModulesFolder { get; } ConfigHandler ConfigHandler { get; } Action<object> OnLogMessage { get; } Action<object> OnLogWarning { get; } Action<object> OnLogError { get; } } } namespace UnityExplorer.UI { public static class DisplayManager { private static Camera canvasCamera; public static int ActiveDisplayIndex { get; private set; } public static Display ActiveDisplay => Display.displays[ActiveDisplayIndex]; public static int Width => ActiveDisplay.renderingWidth; public static int Height => ActiveDisplay.renderingHeight; public static Vector3 MousePosition => Application.isEditor ? InputManager.MousePosition : Display.RelativeMouseAt(InputManager.MousePosition); public static bool MouseInTargetDisplay => MousePosition.z == (float)ActiveDisplayIndex; internal static void Init() { SetDisplay(ConfigManager.Target_Display.Value); ConfigElement<int> target_Display = ConfigManager.Target_Display; target_Display.OnValueChanged = (Action<int>)System.Delegate.Combine(target_Display.OnValueChanged, new Action<int>(SetDisplay)); } public static void SetDisplay(int display) { //IL_00b7: Unknown result type (might be due to invalid IL or missing references) if (ActiveDisplayIndex == display) { return; } if (Display.displays.Length <= display) { ExplorerCore.LogWarning($"Cannot set display index to {display} as there are not enough monitors connected!"); if (ConfigManager.Target_Display.Value == display) { ConfigManager.Target_Display.Value = 0; } return; } ActiveDisplayIndex = display; ActiveDisplay.Activate(); UIManager.UICanvas.targetDisplay = display; if (!Object.op_Implicit((Object)(object)Camera.main) || Camera.main.targetDisplay != display) { if (!Object.op_Implicit((Object)(object)canvasCamera)) { canvasCamera = new GameObject("UnityExplorer_CanvasCamera").AddComponent<Camera>(); Object.DontDestroyOnLoad((Object)(object)((Component)canvasCamera).gameObject); ((Object)canvasCamera).hideFlags = (HideFlags)61; } canvasCamera.targetDisplay = display; } RuntimeHelper.StartCoroutine(FixPanels()); } private static IEnumerator FixPanels() { yield return null; yield return null; foreach (UEPanel panel in UIManager.UIPanels.Values) { ((PanelBase)panel).EnsureValidSize(); ((PanelBase)panel).EnsureValidPosition(); ((PanelBase)panel).Dragger.OnEndResize(); } } } internal class ExplorerUIBase : UIBase { public ExplorerUIBase(string id, Action updateMethod) : base(id, updateMethod) { } protected override PanelManager CreatePanelManager() { return (PanelManager)(object)new UEPanelManager((UIBase)(object)this); } } public static class Notification { private static Text popupLabel; private static string _currentNotification; private static float _timeOfLastNotification; public static void Init() { ConstructUI(); } public static void ShowMessage(string message) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) popupLabel.text = message; _currentNotification = message; _timeOfLastNotification = Time.realtimeSinceStartup; ((Component)popupLabel).transform.localPosition = ((Transform)UIManager.UIRootRect).InverseTransformPoint(DisplayManager.MousePosition) + Vector3.up * 25f; } public static void Update() { if (_currentNotification != null && Time.realtimeSinceStartup - _timeOfLastNotification > 2f) { _currentNotification = null; popupLabel.text = ""; } } private static void ConstructUI() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) popupLabel = UIFactory.CreateLabel(UIManager.UIRoot, "ClipboardNotification", "", (TextAnchor)4, default(Color), true, 14); ((Graphic)popupLabel).rectTransform.sizeDelta = new Vector2(500f, 100f); ((Component)popupLabel).gameObject.AddComponent<Outline>(); CanvasGroup val = ((Component)popupLabel).gameObject.AddComponent<CanvasGroup>(); val.blocksRaycasts = false; } } public class UEPanelManager : PanelManager { protected override Vector3 MousePosition => DisplayManager.MousePosition; protected override Vector2 ScreenDimensions => new Vector2((float)DisplayManager.Width, (float)DisplayManager.Height); protected override bool MouseInTargetDisplay => DisplayManager.MouseInTargetDisplay; public UEPanelManager(UIBase owner) : base(owner) { } internal void DoInvokeOnPanelsReordered() { ((PanelManager)this).InvokeOnPanelsReordered(); } protected override void SortDraggerHeirarchy() { ((PanelManager)this).SortDraggerHeirarchy(); if (!UIManager.Initializing && AutoCompleteModal.Instance != null) { base.draggerInstances.Remove(((PanelBase)AutoCompleteModal.Instance).Dragger); base.draggerInstances.Insert(0, ((PanelBase)AutoCompleteModal.Instance).Dragger); } } } public static class UIManager { public enum Panels { ObjectExplorer, Inspector, CSConsole, Options, ConsoleLog, AutoCompleter, UIInspectorResults, HookManager, Clipboard, Freecam } public enum VerticalAnchor { Top, Bottom } public static VerticalAnchor NavbarAnchor = VerticalAnchor.Top; internal static readonly Dictionary<Panels, UEPanel> UIPanels = new Dictionary<Panels, UEPanel>(); public static RectTransform NavBarRect; public static GameObject NavbarTabButtonHolder; private static readonly Vector2 NAVBAR_DIMENSIONS = new Vector2(1020f, 35f); private static ButtonRef closeBtn; private static int lastScreenWidth; private static int lastScreenHeight; public static bool Initializing { get; internal set; } = true; internal static UIBase UiBase { get; private set; } public static GameObject UIRoot { get { UIBase uiBase = UiBase; return (uiBase != null) ? uiBase.RootObject : null; } } public static RectTransform UIRootRect { get; private set; } public static Canvas UICanvas { get; private set; } public static bool ShowMenu { get { return UiBase != null && UiBase.Enabled; } set { if (UiBase != null && Object.op_Implicit((Object)(object)UIRoot) && UiBase.Enabled != value) { UniversalUI.SetUIActive("com.sinai.unityexplorer", value); UniversalUI.SetUIActive(MouseInspector.UIBaseGUID, value); } } } internal static void InitUI() { UiBase = (UIBase)(object)UniversalUI.RegisterUI<ExplorerUIBase>("com.sinai.unityexplorer", (Action)Update); UIRootRect = UIRoot.GetComponent<RectTransform>(); UICanvas = UIRoot.GetComponent<Canvas>(); DisplayManager.Init(); Display activeDisplay = DisplayManager.ActiveDisplay; lastScreenWidth = activeDisplay.renderingWidth; lastScreenHeight = activeDisplay.renderingHeight; CreateTopNavBar(); UIPanels.Add(Panels.AutoCompleter, new AutoCompleteModal(UiBase)); UIPanels.Add(Panels.ObjectExplorer, new ObjectExplorerPanel(UiBase)); UIPanels.Add(Panels.Inspector, new InspectorPanel(UiBase)); UIPanels.Add(Panels.CSConsole, new CSConsolePanel(UiBase)); UIPanels.Add(Panels.HookManager, new HookManagerPanel(UiBase)); UIPanels.Add(Panels.Freecam, new FreeCamPanel(UiBase)); UIPanels.Add(Panels.Clipboard, new ClipboardPanel(UiBase)); UIPanels.Add(Panels.ConsoleLog, new LogPanel(UiBase)); UIPanels.Add(Panels.Options, new OptionsPanel(UiBase)); UIPanels.Add(Panels.UIInspectorResults, new MouseInspectorResultsPanel(UiBase)); MouseInspector.inspectorUIBase = UniversalUI.RegisterUI(MouseInspector.UIBaseGUID, (Action)null); new MouseInspector(MouseInspector.inspectorUIBase); Notification.Init(); ConsoleController.Init(); Dropdown[] componentsInChildren = UIRoot.GetComponentsInChildren<Dropdown>(true); foreach (Dropdown val in componentsInChildren) { val.RefreshShownValue(); } Initializing = false; if (ConfigManager.Hide_On_Startup.Value) { ShowMenu = false; } } public static void Update() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)UIRoot) && !MouseInspector.Instance.TryUpdate()) { Notification.Update(); if (InputManager.GetKeyDown(ConfigManager.Force_Unlock_Toggle.Value)) { ConfigManager.Force_Unlock_Mouse = !ConfigManager.Force_Unlock_Mouse; } TimeScaleWidget.Instance?.Update(); Display activeDisplay = DisplayManager.ActiveDisplay; if (activeDisplay.renderingWidth != lastScreenWidth || activeDisplay.renderingHeight != lastScreenHeight) { OnScreenDimensionsChanged(); } } } public static UEPanel GetPanel(Panels panel) { return UIPanels[panel]; } public static T GetPanel<T>(Panels panel) where T : UEPanel { return (T)UIPanels[panel]; } public static void TogglePanel(Panels panel) { UEPanel panel2 = GetPanel(panel); SetPanelActive(panel, !((UIModel)panel2).Enabled); } public static void SetPanelActive(Panels panelType, bool active) { ((UIModel)GetPanel(panelType)).SetActive(active); } public static void SetPanelActive(UEPanel panel, bool active) { ((UIModel)panel).SetActive(active); } public static void SetNavBarAnchor() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) switch (NavbarAnchor) { case VerticalAnchor.Top: NavBarRect.anchorMin = new Vector2(0.5f, 1f); NavBarRect.anchorMax = new Vector2(0.5f, 1f); NavBarRect.anchoredPosition = new Vector2(NavBarRect.anchoredPosition.x, 0f); NavBarRect.sizeDelta = NAVBAR_DIMENSIONS; break; case VerticalAnchor.Bottom: NavBarRect.anchorMin = new Vector2(0.5f, 0f); NavBarRect.anchorMax = new Vector2(0.5f, 0f); NavBarRect.anchoredPosition = new Vector2(NavBarRect.anchoredPosition.x, 35f); NavBarRect.sizeDelta = NAVBAR_DIMENSIONS; break; } } private static void OnScreenDimensionsChanged() { Display activeDisplay = DisplayManager.ActiveDisplay; lastScreenWidth = activeDisplay.renderingWidth; lastScreenHeight = activeDisplay.renderingHeight; foreach (KeyValuePair<Panels, UEPanel> uIPanel in UIPanels) { ((PanelBase)uIPanel.Value).EnsureValidSize(); ((PanelBase)uIPanel.Value).EnsureValidPosition(); ((PanelBase)uIPanel.Value).Dragger.OnEndResize(); } } private static void OnCloseButtonClicked() { ShowMenu = false; } private static void Master_Toggle_OnValueChanged(KeyCode val) { closeBtn.ButtonText.text = ((object)(KeyCode)(ref val)).ToString(); } private static void CreateTopNavBar() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Unknown result type (might be due to invalid IL or missing references) GameObject val2 = UIFactory.CreateUIObject("MainNavbar", UIRoot, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val2, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)4, (int?)4, (int?)4, (int?)4, (TextAnchor?)(TextAnchor)4); ((Graphic)val2.AddComponent<Image>()).color = new Color(0.1f, 0.1f, 0.1f); NavBarRect = val2.GetComponent<RectTransform>(); NavBarRect.pivot = new Vector2(0.5f, 1f); NavbarAnchor = ConfigManager.Main_Navbar_Anchor.Value; SetNavBarAnchor(); ConfigElement<VerticalAnchor> main_Navbar_Anchor = ConfigManager.Main_Navbar_Anchor; main_Navbar_Anchor.OnValueChanged = (Action<VerticalAnchor>)System.Delegate.Combine(main_Navbar_Anchor.OnValueChanged, (Action<VerticalAnchor>)delegate(VerticalAnchor val) { NavbarAnchor = val; SetNavBarAnchor(); }); string text = "UE <i><color=grey>4.12.3</color></i>"; Text val3 = UIFactory.CreateLabel(val2, "Title", text, (TextAnchor)4, default(Color), true, 14); GameObject gameObject = ((Component)val3).gameObject; int? num = 75; int? num2 = 0; UIFactory.SetLayoutElement(gameObject, num, (int?)null, num2, (int?)null, (int?)null, (int?)null, (bool?)null); NavbarTabButtonHolder = UIFactory.CreateUIObject("NavTabButtonHolder", val2, default(Vector2)); GameObject navbarTabButtonHolder = NavbarTabButtonHolder; num2 = 25; int? num3 = 999; int? num4 = 999; UIFactory.SetLayoutElement(navbarTabButtonHolder, (int?)null, num2, num4, num3, (int?)null, (int?)null, (bool?)null); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(NavbarTabButtonHolder, (bool?)false, (bool?)true, (bool?)true, (bool?)true, (int?)4, (int?)2, (int?)2, (int?)2, (int?)2, (TextAnchor?)null); TimeScaleWidget.SetUp(val2); GameObject val4 = UIFactory.CreateUIObject("Spacer", val2, default(Vector2)); UIFactory.SetLayoutElement(val4, (int?)15, (int?)null, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); KeyCode value = ConfigManager.Master_Toggle.Value; closeBtn = UIFactory.CreateButton(val2, "CloseButton", ((object)(KeyCode)(ref value)).ToString(), (Color?)null); GameObject gameObject2 = ((Component)closeBtn.Component).gameObject; num4 = 25; UIFactory.SetLayoutElement(gameObject2, (int?)60, num4, (int?)0, (int?)null, (int?)null, (int?)null, (bool?)null); RuntimeHelper.SetColorBlock((Selectable)(object)closeBtn.Component, (Color?)new Color(0.63f, 0.32f, 0.31f), (Color?)new Color(0.81f, 0.25f, 0.2f), (Color?)new Color(0.6f, 0.18f, 0.16f), (Color?)null); ConfigElement<KeyCode> master_Toggle = ConfigManager.Master_Toggle; master_Toggle.OnValueChanged = (Action<KeyCode>)System.Delegate.Combine(master_Toggle.OnValueChanged, new Action<KeyCode>(Master_Toggle_OnValueChanged)); ButtonRef obj = closeBtn; obj.OnClick = (Action)System.Delegate.Combine(obj.OnClick, new Action(OnCloseButtonClicked)); } } } namespace UnityExplorer.UI.Widgets { public abstract class BaseArgumentHandler : IPooledObject { internal Text argNameLabel; internal InputFieldRef inputField; internal TypeCompleter typeCompleter; public float DefaultHeight => 25f; public GameObject UIRoot { get; set; } public abstract void CreateSpecialContent(); public GameObject CreateContent(GameObject parent) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) UIRoot = UIFactory.CreateUIObject("ArgRow", parent, default(Vector2)); GameObject uIRoot = UIRoot; int? num = 25; int? num2 = 50; UIFactory.SetLayoutElement(uIRoot, (int?)50, num, (int?)9999, num2, (int?)null, (int?)null, (bool?)null); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(UIRoot, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)null, (int?)null, (int?)null, (int?)null, (TextAnchor?)null); UIRoot.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; argNameLabel = UIFactory.CreateLabel(UIRoot, "ArgLabel", "not set", (TextAnchor)3, default(Color), true, 14); GameObject gameObject = ((Component)argNameLabel).gameObject; int? num3 = 40; num2 = 90; UIFactory.SetLayoutElement(gameObject, num3, (int?)25, num2, (int?)50, (int?)null, (int?)null, (bool?)null); argNameLabel.horizontalOverflow = (HorizontalWrapMode)0; inputField = UIFactory.CreateInputField(UIRoot, "InputField", "..."); GameObject uIRoot2 = ((UIModel)inputField).UIRoot; num2 = 25; num = 50; UIFactory.SetLayoutElement(uIRoot2, (int?)100, num2, (int?)1000, num, (int?)null, (int?)null, (bool?)null); inputField.Component.lineType = (LineType)2; ((UIModel)inputField).UIRoot.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; typeCompleter = new TypeCompleter(typeof(object), inputField) { Enabled = false }; CreateSpecialContent(); return UIRoot; } } public class EvaluateWidget : IPooledObject { private ParameterInfo[] parameters; internal GameObject parametersHolder; private ParameterHandler[] paramHandlers; private Type[] genericArguments; internal GameObject genericArgumentsHolder; private GenericArgumentHandler[] genericHandlers; public CacheMember Owner { get; set; } public GameObject UIRoot { get; set; } public float DefaultHeight => -1f; public void OnBorrowedFromPool(CacheMember owner) { Owner = owner; parameters = owner.Arguments; paramHandlers = new ParameterHandler[parameters.Length]; genericArguments = owner.GenericArguments; genericHandlers = new GenericArgumentHandler[genericArguments.Length]; SetArgRows(); UIRoot.SetActive(true); } public void OnReturnToPool() { ParameterHandler[] array = paramHandlers; foreach (ParameterHandler parameterHandler in array) { parameterHandler.OnReturned(); Pool<ParameterHandler>.Return(parameterHandler); } paramHandlers = null; GenericArgumentHandler[] array2 = genericHandlers; foreach (GenericArgumentHandler genericArgumentHandler in array2) { genericArgumentHandler.OnReturned(); Pool<GenericArgumentHandler>.Return(genericArgumentHandler); } genericHandlers = null; Owner = null; } public Type[] TryParseGenericArguments() { Type[] array = new Type[genericArguments.Length]; for (int i = 0; i < genericArguments.Length; i++) { array[i] = genericHandlers[i].Evaluate(); } return array; } public object[] TryParseArguments() { if (!parameters.Any()) { return ArgumentUtility.EmptyArgs; } object[] array = new object[parameters.Length]; for (int i = 0; i < parameters.Length; i++) { array[i] = paramHandlers[i].Evaluate(); } return array; } private void SetArgRows() { if (genericArguments.Any()) { genericArgumentsHolder.SetActive(true); SetGenericRows(); } else { genericArgumentsHolder.SetActive(false); } if (parameters.Any()) { parametersHolder.SetActive(true); SetNormalArgRows(); } else { parametersHolder.SetActive(false); } } private void SetGenericRows() { for (int i = 0; i < genericArguments.Length; i++) { Type genericArgument = genericArguments[i]; GenericArgumentHandler genericArgumentHandler = (genericHandlers[i] = Pool<GenericArgumentHandler>.Borrow()); genericArgumentHandler.UIRoot.transform.SetParent(genericArgumentsHolder.transform, false); genericArgumentHandler.OnBorrowed(genericArgument); } } private void SetNormalArgRows() { for (int i = 0; i < parameters.Length; i++) { ParameterInfo paramInfo = parameters[i]; ParameterHandler parameterHandler = (paramHandlers[i] = Pool<ParameterHandler>.Borrow()); parameterHandler.UIRoot.transform.SetParent(parametersHolder.transform, false); parameterHandler.OnBorrowed(paramInfo); } } public GameObject CreateContent(GameObject parent) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) UIRoot = UIFactory.CreateVerticalGroup(parent, "EvaluateWidget", false, false, true, true, 3, new Vector4(2f, 2f, 2f, 2f), new Color(0.15f, 0.15f, 0.15f), (TextAnchor?)null); GameObject uIRoot = UIRoot; int? num = 50; int? num2 = 9999; UIFactory.SetLayoutElement(uIRoot, num, (int?)50, num2, (int?)800, (int?)null, (int?)null, (bool?)null); genericArgumentsHolder = UIFactory.CreateUIObject("GenericHolder", UIRoot, default(Vector2)); GameObject obj = genericArgumentsHolder; num2 = 1000; UIFactory.SetLayoutElement(obj, (int?)null, (int?)null, num2, (int?)null, (int?)null, (int?)null, (bool?)null); Text val = UIFactory.CreateLabel(genericArgumentsHolder, "GenericsTitle", "Generic Arguments", (TextAnchor)3, default(Color), true, 14); GameObject gameObject = ((Component)val).gameObject; num2 = 25; int? num3 = 1000; UIFactory.SetLayoutElement(gameObject, (int?)null, num2, num3, (int?)null, (int?)null, (int?)null, (bool?)null); UIFactory.SetLayoutGroup<VerticalLayoutGroup>(genericArgumentsHolder, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)3, (int?)null, (int?)null, (int?)null, (int?)null, (TextAnchor?)null); GameObject obj2 = genericArgumentsHolder; num3 = 25; num2 = 750; UIFactory.SetLayoutElement(obj2, (int?)50, num3, (int?)9999, num2, (int?)null, (int?)null, (bool?)null); parametersHolder = UIFactory.CreateUIObject("ArgHolder", UIRoot, default(Vector2)); GameObject obj3 = parametersHolder; num2 = 1000; UIFactory.SetLayoutElement(obj3, (int?)null, (int?)null, num2, (int?)null, (int?)null, (int?)null, (bool?)null); Text val2 = UIFactory.CreateLabel(parametersHolder, "ArgsTitle", "Arguments", (TextAnchor)3, default(Color), true, 14); GameObject gameObject2 = ((Component)val2).gameObject; num2 = 25; num3 = 1000; UIFactory.SetLayoutElement(gameObject2, (int?)null, num2, num3, (int?)null, (int?)null, (int?)null, (bool?)null); UIFactory.SetLayoutGroup<VerticalLayoutGroup>(parametersHolder, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)3, (int?)null, (int?)null, (int?)null, (int?)null, (TextAnchor?)null); GameObject obj4 = parametersHolder; num3 = 25; num2 = 750; UIFactory.SetLayoutElement(obj4, (int?)50, num3, (int?)9999, num2, (int?)null, (int?)null, (bool?)null); ButtonRef val3 = UIFactory.CreateButton(UIRoot, "EvaluateButton", "Evaluate", (Color?)new Color(0.2f, 0.2f, 0.2f)); GameObject gameObject3 = ((Component)val3.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject3, (int?)150, num2, (int?)0, (int?)null, (int?)null, (int?)null, (bool?)null); val3.OnClick = (Action)System.Delegate.Combine(val3.OnClick, (Action)delegate { Owner.EvaluateAndSetCell(); }); return UIRoot; } } public class GenericArgumentHandler : BaseArgumentHandler { private Type genericArgument; public void OnBorrowed(Type genericArgument) { this.genericArgument = genericArgument; typeCompleter.Enabled = true; typeCompleter.BaseType = this.genericArgument; typeCompleter.CacheTypes(); Type[] genericParameterConstraints = this.genericArgument.GetGenericParameterConstraints(); StringBuilder stringBuilder = new StringBuilder("<color=#92c470>" + this.genericArgument.Name + "</color>"); for (int i = 0; i < genericParameterConstraints.Length; i++) { if (i == 0) { stringBuilder.Append(' ').Append('('); } else { stringBuilder.Append(',').Append(' '); } stringBuilder.Append(SignatureHighlighter.Parse(genericParameterConstraints[i], false, (MemberInfo)null)); if (i + 1 == genericParameterConstraints.Length) { stringBuilder.Append(')'); } } argNameLabel.text = stringBuilder.ToString(); } public void OnReturned() { genericArgument = null; typeCompleter.Enabled = false; inputField.Text = ""; } public Type Evaluate() { return ReflectionUtility.GetTypeByName(inputField.Text) ?? throw new Exception("Could not find any type by name '" + inputField.Text + "'!"); } public override void CreateSpecialContent() { } } public class GenericConstructorWidget { private GenericArgumentHandler[] handlers; private Type[] currentGenericParameters; private Action<Type[]> currentOnSubmit; private Action currentOnCancel; public GameObject UIRoot; private Text Title; private GameObject ArgsHolder; public void Show(Action<Type[]> onSubmit, Action onCancel, Type genericTypeDefinition) { Title.text = "Setting generic arguments for " + SignatureHighlighter.Parse(genericTypeDefinition, false, (MemberInfo)null) + "..."; OnShow(onSubmit, onCancel, genericTypeDefinition.GetGenericArguments()); } public void Show(Action<Type[]> onSubmit, Action onCancel, MethodInfo genericMethodDefinition) { Title.text = "Setting generic arguments for " + SignatureHighlighter.ParseMethod(genericMethodDefinition) + "..."; OnShow(onSubmit, onCancel, genericMethodDefinition.GetGenericArguments()); } private void OnShow(Action<Type[]> onSubmit, Action onCancel, Type[] genericParameters) { currentOnSubmit = onSubmit; currentOnCancel = onCancel; SetGenericParameters(genericParameters); } private void SetGenericParameters(Type[] genericParameters) { currentGenericParameters = genericParameters; handlers = new GenericArgumentHandler[genericParameters.Length]; for (int i = 0; i < genericParameters.Length; i++) { Type genericArgument = genericParameters[i]; GenericArgumentHandler genericArgumentHandler = (handlers[i] = Pool<GenericArgumentHandler>.Borrow()); genericArgumentHandler.UIRoot.transform.SetParent(ArgsHolder.transform, false); genericArgumentHandler.OnBorrowed(genericArgument); } } public void TrySubmit() { Type[] array = new Type[currentGenericParameters.Length]; for (int i = 0; i < array.Length; i++) { GenericArgumentHandler genericArgumentHandler = handlers[i]; Type type; try { type = genericArgumentHandler.Evaluate(); if ((object)type == null) { throw new Exception(); } } catch { ExplorerCore.LogWarning("Generic argument '" + genericArgumentHandler.inputField.Text + "' is not a valid type."); return; } array[i] = type; } OnClose(); currentOnSubmit(array); } public void Cancel() { OnClose(); currentOnCancel?.Invoke(); } private void OnClose() { if (handlers != null) { GenericArgumentHandler[] array = handlers; foreach (GenericArgumentHandler genericArgumentHandler in array) { genericArgumentHandler.OnReturned(); Pool<GenericArgumentHandler>.Return(genericArgumentHandler); } handlers = null; } } internal void ConstructUI(GameObject parent) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) Vector4 val = new Vector4(5f, 5f, 5f, 5f); TextAnchor? val2 = (TextAnchor)4; UIRoot = UIFactory.CreateVerticalGroup(parent, "GenericArgsHandler", false, false, true, true, 5, val, default(Color), val2); GameObject uIRoot = UIRoot; int? num = 9999; int? num2 = 9999; UIFactory.SetLayoutElement(uIRoot, (int?)null, (int?)null, num, num2, (int?)null, (int?)null, (bool?)null); ButtonRef val3 = UIFactory.CreateButton(UIRoot, "SubmitButton", "Submit", (Color?)new Color(0.2f, 0.3f, 0.2f)); GameObject gameObject = val3.GameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject, (int?)200, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val3.OnClick = (Action)System.Delegate.Combine(val3.OnClick, new Action(TrySubmit)); ButtonRef val4 = UIFactory.CreateButton(UIRoot, "CancelButton", "Cancel", (Color?)new Color(0.3f, 0.2f, 0.2f)); GameObject gameObject2 = val4.GameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject2, (int?)200, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val4.OnClick = (Action)System.Delegate.Combine(val4.OnClick, new Action(Cancel)); Title = UIFactory.CreateLabel(UIRoot, "Title", "Generic Arguments", (TextAnchor)4, default(Color), true, 14); GameObject gameObject3 = ((Component)Title).gameObject; num2 = 25; num = 9999; UIFactory.SetLayoutElement(gameObject3, (int?)null, num2, num, (int?)null, (int?)null, (int?)null, (bool?)null); AutoSliderScrollbar val5 = default(AutoSliderScrollbar); GameObject val6 = UIFactory.CreateScrollView(UIRoot, "GenericArgsScrollView", ref ArgsHolder, ref val5, new Color(0.1f, 0.1f, 0.1f)); num = 9999; num2 = 9999; UIFactory.SetLayoutElement(val6, (int?)null, (int?)null, num, num2, (int?)null, (int?)null, (bool?)null); GameObject argsHolder = ArgsHolder; num2 = 5; num = 5; int? num3 = 5; int? num4 = 5; UIFactory.SetLayoutGroup<VerticalLayoutGroup>(argsHolder, (bool?)null, (bool?)null, (bool?)null, (bool?)null, (int?)null, num2, num3, num, num4, (TextAnchor?)null); } } public class ParameterHandler : BaseArgumentHandler { private ParameterInfo paramInfo; private Type paramType; internal EnumCompleter enumCompleter; private ButtonRef enumHelperButton; private bool usingBasicLabel; private object basicValue; private GameObject basicLabelHolder; private Text basicLabel; private ButtonRef pasteButton; public void OnBorrowed(ParameterInfo paramInfo) { this.paramInfo = paramInfo; paramType = paramInfo.ParameterType; if (paramType.IsByRef) { paramType = paramType.GetElementType(); } argNameLabel.text = SignatureHighlighter.Parse(paramType, false, (MemberInfo)null) + " <color=#a6e9e9>" + paramInfo.Name + "</color>"; if (ParseUtility.CanParse(paramType) || typeof(Type).IsAssignableFrom(paramType)) { usingBasicLabel = false; ((Component)inputField.Component).gameObject.SetActive(true); basicLabelHolder.SetActive(false); typeCompleter.Enabled = typeof(Type).IsAssignableFrom(paramType); enumCompleter.Enabled = paramType.IsEnum; ((Component)enumHelperButton.Component).gameObject.SetActive(paramType.IsEnum); if (!typeCompleter.Enabled) { if ((object)paramType == typeof(string)) { inputField.PlaceholderText.text = "..."; } else { inputField.PlaceholderText.text = "eg. " + ParseUtility.GetExampleInput(paramType); } } else { inputField.PlaceholderText.text = "Enter a Type name..."; typeCompleter.BaseType = typeof(object); typeCompleter.CacheTypes(); } if (enumCompleter.Enabled) { enumCompleter.EnumType = paramType; enumCompleter.CacheEnumValues(); } } else { usingBasicLabel = true; ((Component)inputField.Component).gameObject.SetActive(false); basicLabelHolder.SetActive(true); typeCompleter.Enabled = false; enumCompleter.Enabled = false; ((Component)enumHelperButton.Component).gameObject.SetActive(false); SetDisplayedValueFromPaste(); } } public void OnReturned() { paramInfo = null; enumCompleter.Enabled = false; typeCompleter.Enabled = false; inputField.Text = ""; usingBasicLabel = false; basicValue = null; } public object Evaluate() { if (usingBasicLabel) { return basicValue; } string text = inputField.Text; if (typeof(Type).IsAssignableFrom(paramType)) { return ReflectionUtility.GetTypeByName(text); } if ((object)paramType == typeof(string)) { return text; } if (string.IsNullOrEmpty(text)) { if (paramInfo.IsOptional) { return paramInfo.DefaultValue; } return null; } object result = default(object); Exception ex = default(Exception); if (!ParseUtility.TryParse(text, paramType, ref result, ref ex)) { ExplorerCore.LogWarning("Cannot parse argument '" + paramInfo.Name + "' (" + paramInfo.ParameterType.Name + ")" + ((ex == null) ? "" : (", " + ex.GetType().Name + ": " + ex.Message))); return null; } return result; } private void OnPasteClicked() { if (ClipboardPanel.TryPaste(paramType, out var paste)) { basicValue = paste; SetDisplayedValueFromPaste(); } } private void SetDisplayedValueFromPaste() { if (usingBasicLabel) { basicLabel.text = ToStringUtility.ToStringWithType(basicValue, paramType, false); } else if (typeof(Type).IsAssignableFrom(paramType)) { inputField.Text = GeneralExtensions.FullDescription(basicValue as Type); } else { inputField.Text = ParseUtility.ToStringForInput(basicValue, paramType); } } public override void CreateSpecialContent() { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) enumCompleter = new EnumCompleter(paramType, inputField) { Enabled = false }; enumHelperButton = UIFactory.CreateButton(base.UIRoot, "EnumHelper", "▼", (Color?)null); UIFactory.SetLayoutElement(((Component)enumHelperButton.Component).gameObject, (int?)25, (int?)25, (int?)0, (int?)0, (int?)null, (int?)null, (bool?)null); ButtonRef obj = enumHelperButton; obj.OnClick = (Action)System.Delegate.Combine(obj.OnClick, new Action(enumCompleter.HelperButtonClicked)); GameObject uIRoot = base.UIRoot; Color val = default(Color); ((Color)(ref val))..ctor(0.1f, 0.1f, 0.1f); basicLabelHolder = UIFactory.CreateHorizontalGroup(uIRoot, "BasicLabelHolder", true, true, true, true, 0, default(Vector4), val, (TextAnchor?)null); GameObject obj2 = basicLabelHolder; int? num = 25; int? num2 = 50; UIFactory.SetLayoutElement(obj2, (int?)100, num, (int?)1000, num2, (int?)null, (int?)null, (bool?)null); GameObject obj3 = basicLabelHolder; val = default(Color); basicLabel = UIFactory.CreateLabel(obj3, "BasicLabel", "null", (TextAnchor)3, val, true, 14); ((Component)basicLabel).gameObject.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; pasteButton = UIFactory.CreateButton(base.UIRoot, "PasteButton", "Paste", (Color?)new Color(0.13f, 0.13f, 0.13f, 1f)); GameObject gameObject = ((Component)pasteButton.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject, (int?)28, num2, (int?)0, (int?)null, (int?)null, (int?)null, (bool?)null); ((Graphic)pasteButton.ButtonText).color = Color.green; pasteButton.ButtonText.fontSize = 10; ButtonRef obj4 = pasteButton; obj4.OnClick = (Action)System.Delegate.Combine(obj4.OnClick, new Action(OnPasteClicked)); } } public class AxisControl { public readonly Vector3Control parent; public readonly int axis; public readonly Slider slider; public AxisControl(int axis, Slider slider, Vector3Control parentControl) { parent = parentControl; this.axis = axis; this.slider = slider; } private void OnVectorSliderChanged(float value) { parent.Owner.CurrentSlidingAxisControl = ((value == 0f) ? null : this); } private void OnVectorMinusClicked() { parent.Owner.AxisControlOperation(0f - parent.Increment, parent, axis); } private void OnVectorPlusClicked() { parent.Owner.AxisControlOperation(parent.Increment, parent, axis); } public static AxisControl Create(GameObject parent, string title, int axis, Vector3Control owner) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) Text val = UIFactory.CreateLabel(parent, "Label_" + title, title + ":", (TextAnchor)5, Color.grey, true, 14); GameObject gameObject = ((Component)val).gameObject; int? num = 25; UIFactory.SetLayoutElement(gameObject, (int?)30, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); Slider val2 = default(Slider); GameObject val3 = UIFactory.CreateSlider(parent, "Slider_" + title, ref val2); num = 25; UIFactory.SetLayoutElement(val3, (int?)75, num, (int?)0, (int?)null, (int?)null, (int?)null, (bool?)null); ((Graphic)val2.m_FillImage).color = Color.clear; val2.minValue = -0.1f; val2.maxValue = 0.1f; AxisControl axisControl = new AxisControl(axis, val2, owner); ((UnityEvent<float>)(object)val2.onValueChanged).AddListener((UnityAction<float>)axisControl.OnVectorSliderChanged); ButtonRef val4 = UIFactory.CreateButton(parent, "MinusIncrementButton", "-", (Color?)null); GameObject gameObject2 = val4.GameObject; int? num2 = 20; num = 0; UIFactory.SetLayoutElement(gameObject2, num2, (int?)25, num, (int?)null, (int?)null, (int?)null, (bool?)null); val4.OnClick = (Action)System.Delegate.Combine(val4.OnClick, new Action(axisControl.OnVectorMinusClicked)); ButtonRef val5 = UIFactory.CreateButton(parent, "PlusIncrementButton", "+", (Color?)null); GameObject gameObject3 = val5.GameObject; int? num3 = 20; num = 0; UIFactory.SetLayoutElement(gameObject3, num3, (int?)25, num, (int?)null, (int?)null, (int?)null, (bool?)null); val5.OnClick = (Action)System.Delegate.Combine(val5.OnClick, new Action(axisControl.OnVectorPlusClicked)); return axisControl; } } public class ComponentCell : ButtonCell { public Toggle BehaviourToggle; public ButtonRef DestroyButton; public Action<bool, int> OnBehaviourToggled; public Action<int> OnDestroyClicked; private void BehaviourToggled(bool val) { OnBehaviourToggled?.Invoke(val, ((ButtonCell)this).CurrentDataIndex); } private void DestroyClicked() { OnDestroyClicked?.Invoke(((ButtonCell)this).CurrentDataIndex); } public override GameObject CreateContent(GameObject parent) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) GameObject result = ((ButtonCell)this).CreateContent(parent); ((ButtonCell)this).Button.ButtonText.horizontalOverflow = (HorizontalWrapMode)0; Text val = default(Text); GameObject val2 = UIFactory.CreateToggle(((ButtonCell)this).UIRoot, "BehaviourToggle", ref BehaviourToggle, ref val, default(Color), 20, 20); int? num = 25; UIFactory.SetLayoutElement(val2, (int?)25, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ((UnityEvent<bool>)(object)BehaviourToggle.onValueChanged).AddListener((UnityAction<bool>)BehaviourToggled); val2.transform.SetSiblingIndex(0); DestroyButton = UIFactory.CreateButton(((ButtonCell)this).UIRoot, "DestroyButton", "X", (Color?)new Color(0.3f, 0.2f, 0.2f)); GameObject gameObject = ((Component)DestroyButton.Component).gameObject; num = 21; UIFactory.SetLayoutElement(gameObject, (int?)25, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ButtonRef destroyButton = DestroyButton; destroyButton.OnClick = (Action)System.Delegate.Combine(destroyButton.OnClick, new Action(DestroyClicked)); return result; } } public class ComponentList : ButtonListHandler<Component, ComponentCell> { public GameObjectInspector Parent; private static readonly Dictionary<string, string> compToStringCache = new Dictionary<string, string>(); public ComponentList(ScrollPool<ComponentCell> scrollPool, Func<List<Component>> getEntriesMethod) : base(scrollPool, getEntriesMethod, (Action<ComponentCell, int>)null, (Func<Component, string, bool>)null, (Action<int>)null) { base.SetICell = SetComponentCell; base.ShouldDisplay = CheckShouldDisplay; base.OnCellClicked = OnComponentClicked; } public void Clear() { base.RefreshData(); base.ScrollPool.Refresh(true, true); } private bool CheckShouldDisplay(Component _, string __) { return true; } public override void OnCellBorrowed(ComponentCell cell) { base.OnCellBorrowed(cell); cell.OnBehaviourToggled = (Action<bool, int>)System.Delegate.Combine(cell.OnBehaviourToggled, new Action<bool, int>(OnBehaviourToggled)); cell.OnDestroyClicked = (Action<int>)System.Delegate.Combine(cell.OnDestroyClicked, new Action<int>(OnDestroyClicked)); } public override void SetCell(ComponentCell cell, int index) { base.SetCell(cell, index); } private void OnComponentClicked(int index) { List<Component> list = base.GetEntries(); if (index >= 0 && index < list.Count) { Component val = list[index]; if (Object.op_Implicit((Object)(object)val)) { InspectorManager.Inspect(val); } } } private void OnBehaviourToggled(bool value, int index) { try { List<Component> list = base.GetEntries(); Component val = list[index]; Behaviour val2 = ReflectionExtensions.TryCast<Behaviour>((object)val); if (val2 != null) { val2.enabled = value; } } catch (Exception ex) { ExplorerCore.LogWarning("Exception toggling Behaviour.enabled: " + ReflectionExtensions.ReflectionExToString(ex, true)); } } private void OnDestroyClicked(int index) { try { List<Component> list = base.GetEntries(); Component val = list[index]; Object.DestroyImmediate((Object)(object)val); Parent.UpdateComponents(); } catch (Exception ex) { ExplorerCore.LogWarning("Exception destroying Component: " + ReflectionExtensions.ReflectionExToString(ex, true)); } } private void SetComponentCell(ComponentCell cell, int index) { //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) List<Component> list = base.GetEntries(); ((ButtonCell)cell).Enable(); Component val = list[index]; Type actualType = ReflectionExtensions.GetActualType((object)val); if (!compToStringCache.ContainsKey(actualType.AssemblyQualifiedName)) { compToStringCache.Add(actualType.AssemblyQualifiedName, SignatureHighlighter.Parse(actualType, true, (MemberInfo)null)); } ((ButtonCell)cell).Button.ButtonText.text = compToStringCache[actualType.AssemblyQualifiedName]; if (typeof(Behaviour).IsAssignableFrom(actualType)) { ((Selectable)cell.BehaviourToggle).interactable = true; cell.BehaviourToggle.Set(ReflectionExtensions.TryCast<Behaviour>((object)val).enabled, false); cell.BehaviourToggle.graphic.color = new Color(0.8f, 1f, 0.8f, 0.3f); } else { ((Selectable)cell.BehaviourToggle).interactable = false; cell.BehaviourToggle.Set(true, false); cell.BehaviourToggle.graphic.color = new Color(0.2f, 0.2f, 0.2f); } if (index == 0 && ((Component)cell.DestroyButton.Component).gameObject.activeSelf) { ((Component)cell.DestroyButton.Component).gameObject.SetActive(false); } else if (index > 0 && !((Component)cell.DestroyButton.Component).gameObject.activeSelf) { ((Component)cell.DestroyButton.Component).gameObject.SetActive(true); } } } public class GameObjectControls { public GameObjectInspector Parent { get; } public GameObject Target => Parent.Target; public GameObjectInfoPanel GameObjectInfo { get; } public TransformControls TransformControl { get; } public GameObjectControls(GameObjectInspector parent) { Parent = parent; GameObjectInfo = new GameObjectInfoPanel(this); TransformControl = new TransformControls(this); } public void UpdateGameObjectInfo(bool firstUpdate, bool force) { GameObjectInfo.UpdateGameObjectInfo(firstUpdate, force); } public void UpdateVectorSlider() { TransformControl.UpdateVectorSlider(); } } public class GameObjectInfoPanel { private string lastGoName; private string lastPath; private bool lastParentState; private int lastSceneHandle; private string lastTag; private int lastLayer; private int lastFlags; private ButtonRef ViewParentButton; private InputFieldRef PathInput; private InputFieldRef NameInput; private Toggle ActiveSelfToggle; private Text ActiveSelfText; private Toggle IsStaticToggle; private ButtonRef SceneButton; private InputFieldRef InstanceIDInput; private InputFieldRef TagInput; private Dropdown LayerDropdown; private Dropdown FlagsDropdown; private static List<string> layerToNames; private static Dictionary<string, HideFlags> hideFlagsValues; public GameObjectControls Owner { get; } private GameObject Target => Owner.Target; public GameObjectInfoPanel(GameObjectControls owner) { Owner = owner; Create(); } public void UpdateGameObjectInfo(bool firstUpdate, bool force) { //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_03c1: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Invalid comparison between Unknown and I4 //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Expected I4, but got Unknown //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) if (firstUpdate) { InstanceIDInput.Text = ((Object)Target).GetInstanceID().ToString(); } if (force || (!NameInput.Component.isFocused && ((Object)Target).name != lastGoName)) { lastGoName = ((Object)Target).name; Owner.Parent.Tab.TabText.text = "[G] " + ((Object)Target).name; NameInput.Text = ((Object)Target).name; } if (force || !PathInput.Component.isFocused) { string transformPath = UnityHelpers.GetTransformPath(Target.transform, false); if (transformPath != lastPath) { lastPath = transformPath; PathInput.Text = transformPath; } } if (force || Object.op_Implicit((Object)(object)Target.transform.parent) != lastParentState) { lastParentState = Object.op_Implicit((Object)(object)Target.transform.parent); ((Selectable)ViewParentButton.Component).interactable = lastParentState; if (lastParentState) { ((Graphic)ViewParentButton.ButtonText).color = Color.white; ViewParentButton.ButtonText.text = "◄ View Parent"; } else { ((Graphic)ViewParentButton.ButtonText).color = Color.grey; ViewParentButton.ButtonText.text = "No parent"; } } if (force || Target.activeSelf != ActiveSelfToggle.isOn) { ActiveSelfToggle.Set(Target.activeSelf, false); ((Graphic)ActiveSelfText).color = (ActiveSelfToggle.isOn ? Color.green : Color.red); } if (force || Target.isStatic != IsStaticToggle.isOn) { IsStaticToggle.Set(Target.isStatic, false); } Scene scene; if (!force) { scene = Target.scene; if (((Scene)(ref scene)).handle == lastSceneHandle) { goto IL_0310; } } scene = Target.scene; lastSceneHandle = ((Scene)(ref scene)).handle; Text buttonText = SceneButton.ButtonText; scene = Target.scene; object text; if (!((Scene)(ref scene)).IsValid()) { text = "None (Asset/Resource)"; } else { scene = Target.scene; text = ((Scene)(ref scene)).name; } buttonText.text = (string)text; goto IL_0310; IL_0310: if (force || (!TagInput.Component.isFocused && Target.tag != lastTag)) { lastTag = Target.tag; TagInput.Text = lastTag; } if (force || Target.layer != lastLayer) { lastLayer = Target.layer; LayerDropdown.value = Target.layer; } if (force || (int)((Object)Target).hideFlags != lastFlags) { lastFlags = (int)((Object)Target).hideFlags; Text captionText = FlagsDropdown.captionText; HideFlags hideFlags = ((Object)Target).hideFlags; captionText.text = ((object)(HideFlags)(ref hideFlags)).ToString(); } } private void DoSetParent(Transform transform) { ExplorerCore.Log("Setting target's transform parent to: " + (((Object)(object)transform == (Object)null) ? "null" : ("'" + ((Object)transform).name + "'"))); if (Object.op_Implicit((Object)(object)Target.GetComponent<RectTransform>())) { Target.transform.SetParent(transform, false); } else { Target.transform.parent = transform; } UpdateGameObjectInfo(firstUpdate: false, force: false); Owner.TransformControl.UpdateTransformControlValues(force: false); } private void OnViewParentClicked() { if (Object.op_Implicit((Object)(object)Target) && Object.op_Implicit((Object)(object)Target.transform.parent)) { Owner.Parent.OnTransformCellClicked(((Component)Target.transform.parent).gameObject); } } private void OnPathEndEdit(string input) { lastPath = input; if (string.IsNullOrEmpty(input)) { DoSetParent(null); return; } Transform val = null; if (input.EndsWith("/")) { input = input.Remove(input.Length - 1); } GameObject val2 = GameObject.Find(input); if (val2 != null) { val = val2.transform; } else { string text = input.Split(new char[1] { '/' }).Last(); Object[] array = RuntimeHelper.FindObjectsOfTypeAll(typeof(GameObject)); List<GameObject> list = new List<GameObject>(); Object[] array2 = array; foreach (Object val3 in array2) { if (val3.name == text) { list.Add(ReflectionExtensions.TryCast<GameObject>((object)val3)); } } foreach (GameObject item in list) { string text2 = UnityHelpers.GetTransformPath(item.transform, true); if (text2.EndsWith("/")) { text2 = text2.Remove(text2.Length - 1); } if (text2 == input) { val = item.transform; break; } } } if (Object.op_Implicit((Object)(object)val)) { DoSetParent(val); return; } ExplorerCore.LogWarning("Could not find any GameObject name or path '" + input + "'!"); UpdateGameObjectInfo(firstUpdate: false, force: true); } private void OnNameEndEdit(string value) { ((Object)Target).name = value; UpdateGameObjectInfo(firstUpdate: false, force: true); } private void OnCopyClicked() { ClipboardPanel.Copy(Target); } private void OnActiveSelfToggled(bool value) { Target.SetActive(value); UpdateGameObjectInfo(firstUpdate: false, force: true); } private void OnTagEndEdit(string value) { try { Target.tag = value; UpdateGameObjectInfo(firstUpdate: false, force: true); } catch (Exception ex) { ExplorerCore.LogWarning("Exception setting tag! " + ReflectionExtensions.ReflectionExToString(ex, true)); } } private void OnSceneButtonClicked() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) InspectorManager.Inspect(Target.scene); } private void OnExploreButtonClicked() { ObjectExplorerPanel panel = UIManager.GetPanel<ObjectExplorerPanel>(UIManager.Panels.ObjectExplorer); panel.SceneExplorer.JumpToTransform(Owner.Parent.Target.transform); } private void OnLayerDropdownChanged(int value) { Target.layer = value; UpdateGameObjectInfo(firstUpdate: false, force: true); } private void OnFlagsDropdownChanged(int value) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) try { HideFlags hideFlags = hideFlagsValues[FlagsDropdown.options[value].text]; ((Object)Target).hideFlags = hideFlags; UpdateGameObjectInfo(firstUpdate: false, force: true); } catch (Exception arg) { ExplorerCore.LogWarning($"Exception setting hideFlags: {arg}"); } } private void OnDestroyClicked() { Object.Destroy((Object)(object)Target); InspectorManager.ReleaseInspector(Owner.Parent); } private void OnInstantiateClicked() { GameObject obj = Object.Instantiate<GameObject>(Target); InspectorManager.Inspect(obj); } public void Create() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03bc: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_054a: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_060f: Unknown result type (might be due to invalid IL or missing references) //IL_06a7: Unknown result type (might be due to invalid IL or missing references) //IL_06ad: Unknown result type (might be due to invalid IL or missing references) //IL_0715: Unknown result type (might be due to invalid IL or missing references) //IL_073a: Unknown result type (might be due to invalid IL or missing references) //IL_081b: Unknown result type (might be due to invalid IL or missing references) //IL_0845: Unknown result type (might be due to invalid IL or missing references) //IL_0926: Unknown result type (might be due to invalid IL or missing references) //IL_096e: Unknown result type (might be due to invalid IL or missing references) //IL_0a13: Unknown result type (might be due to invalid IL or missing references) //IL_0aa5: Unknown result type (might be due to invalid IL or missing references) //IL_0aab: Unknown result type (might be due to invalid IL or missing references) //IL_0b6a: Unknown result type (might be due to invalid IL or missing references) //IL_0c10: Unknown result type (might be due to invalid IL or missing references) //IL_0d1f: Unknown result type (might be due to invalid IL or missing references) //IL_0dfe: Unknown result type (might be due to invalid IL or missing references) //IL_0e42: Unknown result type (might be due to invalid IL or missing references) //IL_0e4c: Expected O, but got Unknown //IL_0e8d: Unknown result type (might be due to invalid IL or missing references) //IL_0f20: Unknown result type (might be due to invalid IL or missing references) //IL_0fb8: Unknown result type (might be due to invalid IL or missing references) //IL_0fc2: Expected O, but got Unknown GameObject val2 = UIFactory.CreateVerticalGroup(Owner.Parent.Content, "TopInfoHolder", false, false, true, true, 3, new Vector4(3f, 3f, 3f, 3f), new Color(0.1f, 0.1f, 0.1f), (TextAnchor?)(TextAnchor)3); int? num = 100; int? num2 = 9999; UIFactory.SetLayoutElement(val2, (int?)null, num, num2, (int?)null, (int?)null, (int?)null, (bool?)null); val2.AddComponent<ContentSizeFitter>().verticalFit = (FitMode)2; GameObject val3 = UIFactory.CreateUIObject("ParentRow", val2, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val3, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)0, (int?)0, (int?)0, (int?)0, (TextAnchor?)null); num2 = 25; num = 9999; UIFactory.SetLayoutElement(val3, (int?)null, num2, num, (int?)null, (int?)null, (int?)null, (bool?)null); ViewParentButton = UIFactory.CreateButton(val3, "ViewParentButton", "◄ View Parent", (Color?)new Color(0.2f, 0.2f, 0.2f)); ViewParentButton.ButtonText.fontSize = 13; GameObject gameObject = ((Component)ViewParentButton.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject, (int?)100, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ButtonRef viewParentButton = ViewParentButton; viewParentButton.OnClick = (Action)System.Delegate.Combine(viewParentButton.OnClick, new Action(OnViewParentClicked)); PathInput = UIFactory.CreateInputField(val3, "PathInput", "..."); ((Graphic)PathInput.Component.textComponent).color = Color.grey; PathInput.Component.textComponent.fontSize = 14; GameObject uIRoot = ((UIModel)PathInput).UIRoot; num = 25; UIFactory.SetLayoutElement(uIRoot, (int?)100, num, (int?)9999, (int?)null, (int?)null, (int?)null, (bool?)null); PathInput.Component.lineType = (LineType)1; ButtonRef val4 = UIFactory.CreateButton(val3, "CopyButton", "Copy to Clipboard", (Color?)new Color(0.2f, 0.2f, 0.2f, 1f)); ((Graphic)val4.ButtonText).color = Color.yellow; GameObject gameObject2 = ((Component)val4.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject2, (int?)120, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val4.OnClick = (Action)System.Delegate.Combine(val4.OnClick, new Action(OnCopyClicked)); UnityHelpers.GetOnEndEdit(PathInput.Component).AddListener((UnityAction<string>)delegate(string val) { OnPathEndEdit(val); }); GameObject val5 = UIFactory.CreateUIObject("TitleRow", val2, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val5, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)null, (int?)null, (int?)null, (int?)null, (TextAnchor?)null); Text val6 = UIFactory.CreateLabel(val5, "Title", SignatureHighlighter.Parse(typeof(GameObject), false, (MemberInfo)null), (TextAnchor)3, default(Color), true, 17); GameObject gameObject3 = ((Component)val6).gameObject; num = 30; UIFactory.SetLayoutElement(gameObject3, (int?)100, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); NameInput = UIFactory.CreateInputField(val5, "NameInput", "untitled"); GameObject gameObject4 = ((Component)NameInput.Component).gameObject; num = 30; UIFactory.SetLayoutElement(gameObject4, (int?)100, num, (int?)9999, (int?)null, (int?)null, (int?)null, (bool?)null); NameInput.Component.textComponent.fontSize = 15; UnityHelpers.GetOnEndEdit(NameInput.Component).AddListener((UnityAction<string>)delegate(string val) { OnNameEndEdit(val); }); GameObject val7 = UIFactory.CreateUIObject("ParentRow", val2, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val7, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)0, (int?)0, (int?)0, (int?)0, (TextAnchor?)null); num = 25; num2 = 9999; UIFactory.SetLayoutElement(val7, (int?)null, num, num2, (int?)null, (int?)null, (int?)null, (bool?)null); GameObject val8 = UIFactory.CreateToggle(val7, "ActiveSelf", ref ActiveSelfToggle, ref ActiveSelfText, default(Color), 20, 20); num2 = 25; UIFactory.SetLayoutElement(val8, (int?)100, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ActiveSelfText.text = "ActiveSelf"; ((UnityEvent<bool>)(object)ActiveSelfToggle.onValueChanged).AddListener((UnityAction<bool>)OnActiveSelfToggled); Text val9 = default(Text); GameObject val10 = UIFactory.CreateToggle(val7, "IsStatic", ref IsStaticToggle, ref val9, default(Color), 20, 20); num2 = 25; UIFactory.SetLayoutElement(val10, (int?)80, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val9.text = "IsStatic"; ((Graphic)val9).color = Color.grey; ((Selectable)IsStaticToggle).interactable = false; Text val11 = UIFactory.CreateLabel(val7, "InstanceIDLabel", "Instance ID:", (TextAnchor)5, Color.grey, true, 14); GameObject gameObject5 = ((Component)val11).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject5, (int?)90, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); InstanceIDInput = UIFactory.CreateInputField(val7, "InstanceIDInput", "error"); GameObject gameObject6 = ((Component)InstanceIDInput.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject6, (int?)110, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ((Graphic)InstanceIDInput.Component.textComponent).color = Color.grey; InstanceIDInput.Component.readOnly = true; Text val12 = UIFactory.CreateLabel(val7, "TagLabel", "Tag:", (TextAnchor)5, Color.grey, true, 14); GameObject gameObject7 = ((Component)val12).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject7, (int?)40, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); TagInput = UIFactory.CreateInputField(val7, "TagInput", "none"); GameObject gameObject8 = ((Component)TagInput.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject8, (int?)100, num2, (int?)999, (int?)null, (int?)null, (int?)null, (bool?)null); ((Graphic)TagInput.Component.textComponent).color = Color.white; UnityHelpers.GetOnEndEdit(TagInput.Component).AddListener((UnityAction<string>)delegate(string val) { OnTagEndEdit(val); }); ButtonRef val13 = UIFactory.CreateButton(val7, "InstantiateBtn", "Instantiate", (Color?)new Color(0.2f, 0.2f, 0.2f)); GameObject gameObject9 = ((Component)val13.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject9, (int?)120, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val13.OnClick = (Action)System.Delegate.Combine(val13.OnClick, new Action(OnInstantiateClicked)); ButtonRef val14 = UIFactory.CreateButton(val7, "DestroyBtn", "Destroy", (Color?)new Color(0.3f, 0.2f, 0.2f)); GameObject gameObject10 = ((Component)val14.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject10, (int?)80, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val14.OnClick = (Action)System.Delegate.Combine(val14.OnClick, new Action(OnDestroyClicked)); GameObject val15 = UIFactory.CreateUIObject("ParentRow", val2, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val15, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)0, (int?)0, (int?)0, (int?)0, (TextAnchor?)null); num2 = 25; num = 9999; UIFactory.SetLayoutElement(val15, (int?)null, num2, num, (int?)null, (int?)null, (int?)null, (bool?)null); ButtonRef val16 = UIFactory.CreateButton(val15, "ExploreBtn", "Show in Explorer", (Color?)new Color(0.15f, 0.15f, 0.15f)); GameObject gameObject11 = ((Component)val16.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject11, (int?)100, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); val16.ButtonText.fontSize = 12; val16.OnClick = (Action)System.Delegate.Combine(val16.OnClick, new Action(OnExploreButtonClicked)); Text val17 = UIFactory.CreateLabel(val15, "SceneLabel", "Scene:", (TextAnchor)3, Color.grey, true, 14); GameObject gameObject12 = ((Component)val17).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject12, (int?)50, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); SceneButton = UIFactory.CreateButton(val15, "SceneButton", "untitled", (Color?)null); GameObject gameObject13 = ((Component)SceneButton.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject13, (int?)120, num, (int?)999, (int?)null, (int?)null, (int?)null, (bool?)null); ButtonRef sceneButton = SceneButton; sceneButton.OnClick = (Action)System.Delegate.Combine(sceneButton.OnClick, new Action(OnSceneButtonClicked)); Text val18 = UIFactory.CreateLabel(val15, "LayerLabel", "Layer:", (TextAnchor)3, Color.grey, true, 14); GameObject gameObject14 = ((Component)val18).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject14, (int?)50, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); GameObject val19 = UIFactory.CreateDropdown(val15, "LayerDropdown", ref LayerDropdown, "0", 14, (Action<int>)OnLayerDropdownChanged, (string[])null); num = 25; UIFactory.SetLayoutElement(val19, (int?)110, num, (int?)999, (int?)null, (int?)null, (int?)null, (bool?)null); ((Graphic)LayerDropdown.captionText).color = SignatureHighlighter.EnumGreen; if (layerToNames == null) { GetLayerNames(); } foreach (string layerToName in layerToNames) { LayerDropdown.options.Add(new OptionData(layerToName)); } LayerDropdown.value = 0; LayerDropdown.RefreshShownValue(); Text val20 = UIFactory.CreateLabel(val15, "FlagsLabel", "Flags:", (TextAnchor)5, Color.grey, true, 14); GameObject gameObject15 = ((Component)val20).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject15, (int?)50, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); GameObject val21 = UIFactory.CreateDropdown(val15, "FlagsDropdown", ref FlagsDropdown, "None", 14, (Action<int>)OnFlagsDropdownChanged, (string[])null); ((Graphic)FlagsDropdown.captionText).color = SignatureHighlighter.EnumGreen; num = 25; UIFactory.SetLayoutElement(val21, (int?)135, num, (int?)999, (int?)null, (int?)null, (int?)null, (bool?)null); if (hideFlagsValues == null) { GetHideFlagNames(); } foreach (string key in hideFlagsValues.Keys) { FlagsDropdown.options.Add(new OptionData(key)); } FlagsDropdown.value = 0; FlagsDropdown.RefreshShownValue(); } private static void GetLayerNames() { layerToNames = new List<string>(); for (int i = 0; i < 32; i++) { string text = RuntimeHelper.LayerToName(i); if (string.IsNullOrEmpty(text)) { text = i.ToString(); } layerToNames.Add(text); } } private static void GetHideFlagNames() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) hideFlagsValues = new Dictionary<string, HideFlags>(); Array values = System.Enum.GetValues(typeof(HideFlags)); foreach (HideFlags item in values) { HideFlags value = item; hideFlagsValues.Add(((object)(HideFlags)(ref value)).ToString(), value); } } } public class TransformControls { private Vector3Control PositionControl; private Vector3Control LocalPositionControl; private Vector3Control RotationControl; private Vector3Control ScaleControl; public GameObjectControls Owner { get; } private GameObject Target => Owner.Target; public AxisControl CurrentSlidingAxisControl { get; set; } public TransformControls(GameObjectControls owner) { Owner = owner; Create(); } public void UpdateTransformControlValues(bool force) { PositionControl.Update(force); LocalPositionControl.Update(force); RotationControl.Update(force); ScaleControl.Update(force); } public void UpdateVectorSlider() { AxisControl currentSlidingAxisControl = CurrentSlidingAxisControl; if (currentSlidingAxisControl != null) { if (!InputManager.GetMouseButton(0)) { currentSlidingAxisControl.slider.value = 0f; currentSlidingAxisControl = null; } else { AxisControlOperation(currentSlidingAxisControl.slider.value, currentSlidingAxisControl.parent, currentSlidingAxisControl.axis); } } } public void AxisControlOperation(float value, Vector3Control parent, int axis) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) Transform transform = Target.transform; TransformType type = parent.Type; if (1 == 0) { } Vector3 val = (Vector3)(type switch { TransformType.Position => transform.position, TransformType.LocalPosition => transform.localPosition, TransformType.Rotation => transform.localEulerAngles, TransformType.Scale => transform.localScale, _ => throw new NotImplementedException(), }); if (1 == 0) { } Vector3 val2 = val; switch (axis) { case 0: val2.x += value; break; case 1: val2.y += value; break; case 2: val2.z += value; break; } switch (parent.Type) { case TransformType.Position: transform.position = val2; break; case TransformType.LocalPosition: transform.localPosition = val2; break; case TransformType.Rotation: transform.localEulerAngles = val2; break; case TransformType.Scale: transform.localScale = val2; break; } UpdateTransformControlValues(force: false); } public void Create() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) GameObject val = UIFactory.CreateVerticalGroup(Owner.Parent.Content, "TransformControls", false, false, true, true, 2, new Vector4(2f, 2f, 0f, 0f), new Color(0.1f, 0.1f, 0.1f), (TextAnchor?)null); int? num = 100; int? num2 = 9999; UIFactory.SetLayoutElement(val, (int?)null, num, num2, (int?)null, (int?)null, (int?)null, (bool?)null); PositionControl = Vector3Control.Create(this, val, "Position:", TransformType.Position); LocalPositionControl = Vector3Control.Create(this, val, "Local Position:", TransformType.LocalPosition); RotationControl = Vector3Control.Create(this, val, "Rotation:", TransformType.Rotation); ScaleControl = Vector3Control.Create(this, val, "Scale:", TransformType.Scale); } } public enum TransformType { Position, LocalPosition, Rotation, Scale } public class Vector3Control { private Vector3 lastValue; public TransformControls Owner { get; } public GameObject Target => Owner.Owner.Target; public Transform Transform => Target.transform; public TransformType Type { get; } public InputFieldRef MainInput { get; } public AxisControl[] AxisControls { get; } = new AxisControl[3]; public InputFieldRef IncrementInput { get; set; } public float Increment { get; set; } = 0.1f; private Vector3 CurrentValue { get { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) TransformType type = Type; if (1 == 0) { } Vector3 result = (Vector3)(type switch { TransformType.Position => Transform.position, TransformType.LocalPosition => Transform.localPosition, TransformType.Rotation => Transform.localEulerAngles, TransformType.Scale => Transform.localScale, _ => throw new NotImplementedException(), }); if (1 == 0) { } return result; } } public Vector3Control(TransformControls owner, TransformType type, InputFieldRef input) { Owner = owner; Type = type; MainInput = input; } public void Update(bool force) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) Vector3 currentValue = CurrentValue; if (force || (!MainInput.Component.isFocused && !((object)(Vector3)(ref lastValue)).Equals((object?)currentValue))) { MainInput.Text = ParseUtility.ToStringForInput<Vector3>((object)currentValue); lastValue = currentValue; } } private void OnTransformInputEndEdit(TransformType type, string input) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) Exception ex = default(Exception); switch (type) { case TransformType.Position: { Vector3 position = default(Vector3); if (ParseUtility.TryParse<Vector3>(input, ref position, ref ex)) { Target.transform.position = position; } break; } case TransformType.LocalPosition: { Vector3 localPosition = default(Vector3); if (ParseUtility.TryParse<Vector3>(input, ref localPosition, ref ex)) { Target.transform.localPosition = localPosition; } break; } case TransformType.Rotation: { Vector3 localEulerAngles = default(Vector3); if (ParseUtility.TryParse<Vector3>(input, ref localEulerAngles, ref ex)) { Target.transform.localEulerAngles = localEulerAngles; } break; } case TransformType.Scale: { Vector3 localScale = default(Vector3); if (ParseUtility.TryParse<Vector3>(input, ref localScale, ref ex)) { Target.transform.localScale = localScale; } break; } } Owner.UpdateTransformControlValues(force: true); } private void IncrementInput_OnEndEdit(string value) { float num = default(float); Exception ex = default(Exception); if (!ParseUtility.TryParse<float>(value, ref num, ref ex)) { IncrementInput.Text = ParseUtility.ToStringForInput<float>((object)Increment); return; } Increment = num; AxisControl[] axisControls = AxisControls; foreach (AxisControl axisControl in axisControls) { axisControl.slider.minValue = 0f - num; axisControl.slider.maxValue = num; } } public static Vector3Control Create(TransformControls owner, GameObject transformGroup, string title, TransformType type) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) GameObject val = UIFactory.CreateUIObject("Row_" + title, transformGroup, default(Vector2)); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)0, (int?)0, (int?)0, (int?)0, (TextAnchor?)null); int? num = 25; int? num2 = 9999; UIFactory.SetLayoutElement(val, (int?)null, num, num2, (int?)null, (int?)null, (int?)null, (bool?)null); Text val2 = UIFactory.CreateLabel(val, "PositionLabel", title, (TextAnchor)5, Color.grey, true, 14); GameObject gameObject = ((Component)val2).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject, (int?)110, num2, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); InputFieldRef val3 = UIFactory.CreateInputField(val, "InputField", "..."); GameObject gameObject2 = ((Component)val3.Component).gameObject; num2 = 25; UIFactory.SetLayoutElement(gameObject2, (int?)100, num2, (int?)999, (int?)null, (int?)null, (int?)null, (bool?)null); Vector3Control control = new Vector3Control(owner, type, val3); UnityHelpers.GetOnEndEdit(val3.Component).AddListener((UnityAction<string>)delegate(string value) { control.OnTransformInputEndEdit(type, value); }); control.AxisControls[0] = AxisControl.Create(val, "X", 0, control); control.AxisControls[1] = AxisControl.Create(val, "Y", 1, control); control.AxisControls[2] = AxisControl.Create(val, "Z", 2, control); control.IncrementInput = UIFactory.CreateInputField(val, "IncrementInput", "..."); control.IncrementInput.Text = "0.1"; GameObject gameObject3 = control.IncrementInput.GameObject; int? num3 = 30; num2 = 0; UIFactory.SetLayoutElement(gameObject3, num3, (int?)25, num2, (int?)null, (int?)null, (int?)null, (bool?)null); UnityHelpers.GetOnEndEdit(control.IncrementInput.Component).AddListener((UnityAction<string>)control.IncrementInput_OnEndEdit); return control; } } [<89700e04-3ad5-4ec3-80e0-db652069522c>NullableContext(1)] [<4a56e098-d11c-48ef-93e8-5722892b15a7>Nullable(0)] internal class TimeScaleWidget { [<4a56e098-d11c-48ef-93e8-5722892b15a7>Nullable(2)] public static TimeScaleWidget Instance; private readonly InputFieldRef timeInput; private readonly ButtonRef lockBtn; private bool locked; private bool settingTimeScale; public float DesiredTime { get; private set; } public static void SetUp(GameObject parent) { Instance = new TimeScaleWidget(parent); } private TimeScaleWidget(GameObject parent) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) Text val = UIFactory.CreateLabel(parent, "TimeLabel", "Time:", (TextAnchor)5, Color.grey, true, 14); GameObject gameObject = ((Component)val).gameObject; int? num = 25; UIFactory.SetLayoutElement(gameObject, (int?)35, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); timeInput = UIFactory.CreateInputField(parent, "TimeInput", "timeScale"); GameObject gameObject2 = ((Component)timeInput.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject2, (int?)40, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); UnityHelpers.GetOnEndEdit(timeInput.Component).AddListener((UnityAction<string>)OnTimeInputEndEdit); timeInput.Text = string.Empty; timeInput.Text = Time.timeScale.ToString(); lockBtn = UIFactory.CreateButton(parent, "PauseButton", "Lock", (Color?)new Color(0.2f, 0.2f, 0.2f)); GameObject gameObject3 = ((Component)lockBtn.Component).gameObject; num = 25; UIFactory.SetLayoutElement(gameObject3, (int?)50, num, (int?)null, (int?)null, (int?)null, (int?)null, (bool?)null); ButtonRef obj = lockBtn; obj.OnClick = (Action)System.Delegate.Combine(obj.OnClick, new Action(OnPauseButtonClicked)); } public void Update() { if (locked) { UpdateTimeScale(); } if (timeInput != null && !timeInput.Component.isFocused) { timeInput.Text = Time.timeScale.ToString("F2"); } } public void LockTo(float timeScale) { locked = true; SetTimeScale(timeScale); UpdateUi
plugins/sinai-dev-UnityExplorer/UniverseLib.Mono.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; using UniverseLib.Config; using UniverseLib.Input; using UniverseLib.Runtime; using UniverseLib.Runtime.Mono; using UniverseLib.UI; using UniverseLib.UI.Models; using UniverseLib.UI.ObjectPool; using UniverseLib.UI.Panels; using UniverseLib.UI.Widgets; using UniverseLib.UI.Widgets.ScrollView; using UniverseLib.Utility; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("UniverseLib")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Sinai, yukieiji")] [assembly: AssemblyProduct("UniverseLib")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("b21dbde3-5d6f-4726-93ab-cc3cc68bae7d")] [assembly: AssemblyFileVersion("1.5.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.5.8.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public static class MonoExtensions { private static PropertyInfo p_childControlHeight = AccessTools.Property(typeof(HorizontalOrVerticalLayoutGroup), "childControlHeight"); private static PropertyInfo p_childControlWidth = AccessTools.Property(typeof(HorizontalOrVerticalLayoutGroup), "childControlWidth"); public static void AddListener(this UnityEvent _event, Action listener) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown _event.AddListener(new UnityAction(listener.Invoke)); } public static void AddListener<T>(this UnityEvent<T> _event, Action<T> listener) { _event.AddListener((UnityAction<T>)listener.Invoke); } public static void RemoveListener(this UnityEvent _event, Action listener) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown _event.RemoveListener(new UnityAction(listener.Invoke)); } public static void RemoveListener<T>(this UnityEvent<T> _event, Action<T> listener) { _event.RemoveListener((UnityAction<T>)listener.Invoke); } public static void Clear(this StringBuilder sb) { sb.Remove(0, sb.Length); } public static void SetChildControlHeight(this HorizontalOrVerticalLayoutGroup group, bool value) { p_childControlHeight?.SetValue(group, value, null); } public static void SetChildControlWidth(this HorizontalOrVerticalLayoutGroup group, bool value) { p_childControlWidth?.SetValue(group, value, null); } } namespace UniverseLib { public static class ReflectionExtensions { public static Type GetActualType(this object obj) { return ReflectionUtility.Instance.Internal_GetActualType(obj); } public static object TryCast(this object obj) { return ReflectionUtility.Instance.Internal_TryCast(obj, ReflectionUtility.Instance.Internal_GetActualType(obj)); } public static object TryCast(this object obj, Type castTo) { return ReflectionUtility.Instance.Internal_TryCast(obj, castTo); } public static T TryCast<T>(this object obj) { try { return (T)ReflectionUtility.Instance.Internal_TryCast(obj, typeof(T)); } catch { return default(T); } } public static Type[] TryGetTypes(this Assembly asm) { try { return asm.GetTypes(); } catch (ReflectionTypeLoadException e) { return ReflectionUtility.TryExtractTypesFromException(e); } catch { try { return asm.GetExportedTypes(); } catch (ReflectionTypeLoadException e2) { return ReflectionUtility.TryExtractTypesFromException(e2); } catch { return ArgumentUtility.EmptyTypes; } } } public static bool ReferenceEqual(this object objA, object objB) { if (objA == objB) { return true; } Object val = (Object)((objA is Object) ? objA : null); if (val != null) { Object val2 = (Object)((objB is Object) ? objB : null); if (val2 != null && Object.op_Implicit(val) && Object.op_Implicit(val2) && val.m_CachedPtr == val2.m_CachedPtr) { return true; } } return false; } public static string ReflectionExToString(this Exception e, bool innerMost = true) { if (e == null) { return "The exception was null."; } if (innerMost) { e = e.GetInnerMostException(); } return $"{e.GetType()}: {e.Message}"; } public static Exception GetInnerMostException(this Exception e) { while (e != null && e.InnerException != null) { e = e.InnerException; } return e; } } public class ReflectionUtility { public static bool Initializing; public const BindingFlags FLAGS = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; public static readonly SortedDictionary<string, Type> AllTypes = new SortedDictionary<string, Type>(StringComparer.OrdinalIgnoreCase); public static readonly List<string> AllNamespaces = new List<string>(); private static readonly HashSet<string> uniqueNamespaces = new HashSet<string>(); private static string[] allTypeNamesArray; private static readonly Dictionary<string, Type> shorthandToType = new Dictionary<string, Type> { { "object", typeof(object) }, { "string", typeof(string) }, { "bool", typeof(bool) }, { "byte", typeof(byte) }, { "sbyte", typeof(sbyte) }, { "char", typeof(char) }, { "decimal", typeof(decimal) }, { "double", typeof(double) }, { "float", typeof(float) }, { "int", typeof(int) }, { "uint", typeof(uint) }, { "long", typeof(long) }, { "ulong", typeof(ulong) }, { "short", typeof(short) }, { "ushort", typeof(ushort) }, { "void", typeof(void) } }; internal static readonly Dictionary<string, Type[]> baseTypes = new Dictionary<string, Type[]>(); internal static ReflectionUtility Instance { get; private set; } public static event Action<Type> OnTypeLoaded; internal static void Init() { Instance = new ReflectionUtility(); Instance.Initialize(); } protected virtual void Initialize() { SetupTypeCache(); Initializing = false; } public static string[] GetTypeNameArray() { if (allTypeNamesArray == null || allTypeNamesArray.Length != AllTypes.Count) { allTypeNamesArray = new string[AllTypes.Count]; int num = 0; foreach (string key in AllTypes.Keys) { allTypeNamesArray[num] = key; num++; } } return allTypeNamesArray; } private static void SetupTypeCache() { if (Universe.Context == RuntimeContext.Mono) { ForceLoadManagedAssemblies(); } Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly asm in assemblies) { CacheTypes(asm); } AppDomain.CurrentDomain.AssemblyLoad += AssemblyLoaded; } private static void AssemblyLoaded(object sender, AssemblyLoadEventArgs args) { if ((object)args.LoadedAssembly != null && !(args.LoadedAssembly.GetName().Name == "completions")) { CacheTypes(args.LoadedAssembly); } } private static void ForceLoadManagedAssemblies() { string path = Path.Combine(Application.dataPath, "Managed"); if (!Directory.Exists(path)) { return; } string[] files = Directory.GetFiles(path, "*.dll"); foreach (string assemblyFile in files) { try { Assembly asm = Assembly.LoadFrom(assemblyFile); asm.TryGetTypes(); } catch { } } } internal static void CacheTypes(Assembly asm) { Type[] array = asm.TryGetTypes(); foreach (Type type in array) { try { string @namespace = type.Namespace; if (!string.IsNullOrEmpty(@namespace) && uniqueNamespaces.Add(@namespace)) { int num = 0; foreach (string allNamespace in AllNamespaces) { if (@namespace.CompareTo(allNamespace) < 0) { break; } num++; } AllNamespaces.Insert(num, @namespace); } } catch (Exception arg) { Universe.LogWarning($"THIS WARNING IS NOT BUG!!!! DON'T REPORT THIS!!!!!\n Can't cache type named {type.Name} Error: {arg}"); } AllTypes[type.FullName] = type; ReflectionUtility.OnTypeLoaded?.Invoke(type); } } public static Type GetTypeByName(string fullName) { return Instance.Internal_GetTypeByName(fullName); } internal virtual Type Internal_GetTypeByName(string fullName) { if (shorthandToType.TryGetValue(fullName, out var value)) { return value; } AllTypes.TryGetValue(fullName, out var value2); if ((object)value2 == null) { value2 = Type.GetType(fullName); } return value2; } internal virtual Type Internal_GetActualType(object obj) { return obj?.GetType(); } internal virtual object Internal_TryCast(object obj, Type castTo) { return obj; } public static string ProcessTypeInString(Type type, string theString) { return Instance.Internal_ProcessTypeInString(theString, type); } internal virtual string Internal_ProcessTypeInString(string theString, Type type) { return theString; } public static void FindSingleton(string[] possibleNames, Type type, BindingFlags flags, List<object> instances) { Instance.Internal_FindSingleton(possibleNames, type, flags, instances); } internal virtual void Internal_FindSingleton(string[] possibleNames, Type type, BindingFlags flags, List<object> instances) { foreach (string name in possibleNames) { FieldInfo field = type.GetField(name, flags); if ((object)field != null) { object value = field.GetValue(null); if (value != null) { instances.Add(value); break; } } } } public static Type[] TryExtractTypesFromException(ReflectionTypeLoadException e) { try { return e.Types.Where((Type it) => (object)it != null).ToArray(); } catch { return ArgumentUtility.EmptyTypes; } } public static Type[] GetAllBaseTypes(object obj) { return GetAllBaseTypes(obj?.GetActualType()); } public static Type[] GetAllBaseTypes(Type type) { if ((object)type == null) { throw new ArgumentNullException("type"); } string assemblyQualifiedName = type.AssemblyQualifiedName; if (baseTypes.TryGetValue(assemblyQualifiedName, out var value)) { return value; } List<Type> list = new List<Type>(); while ((object)type != null) { list.Add(type); type = type.BaseType; } value = list.ToArray(); baseTypes.Add(assemblyQualifiedName, value); return value; } public static void GetImplementationsOf(Type baseType, Action<HashSet<Type>> onResultsFetched, bool allowAbstract, bool allowGeneric, bool allowEnum) { RuntimeHelper.StartCoroutine(DoGetImplementations(onResultsFetched, baseType, allowAbstract, allowGeneric, allowEnum)); } private static IEnumerator DoGetImplementations(Action<HashSet<Type>> onResultsFetched, Type baseType, bool allowAbstract, bool allowGeneric, bool allowEnum) { List<Type> resolvedTypes = new List<Type>(); OnTypeLoaded += ourListener; HashSet<Type> set = new HashSet<Type>(); IEnumerator coro2 = GetImplementationsAsync(baseType, set, allowAbstract, allowGeneric, allowEnum, DefaultTypesEnumerator()); while (coro2.MoveNext()) { yield return null; } OnTypeLoaded -= ourListener; if (resolvedTypes.Count > 0) { coro2 = GetImplementationsAsync(baseType, set, allowAbstract, allowGeneric, allowEnum, resolvedTypes.GetEnumerator()); while (coro2.MoveNext()) { yield return null; } } onResultsFetched(set); void ourListener(Type t) { resolvedTypes.Add(t); } } private static IEnumerator<Type> DefaultTypesEnumerator() { string[] names = GetTypeNameArray(); foreach (string name in names) { yield return AllTypes[name]; } } private static IEnumerator GetImplementationsAsync(Type baseType, HashSet<Type> set, bool allowAbstract, bool allowGeneric, bool allowEnum, IEnumerator<Type> enumerator) { Stopwatch sw = new Stopwatch(); sw.Start(); bool isGenericParam = baseType?.IsGenericParameter ?? false; while (enumerator.MoveNext()) { if (sw.ElapsedMilliseconds > 10) { yield return null; sw.Reset(); sw.Start(); } try { Type type = enumerator.Current; if (set.Contains(type) || (!allowAbstract && type.IsAbstract) || (!allowGeneric && type.IsGenericType) || (!allowEnum && type.IsEnum) || type.FullName.Contains("PrivateImplementationDetails") || type.FullName.Contains("DisplayClass") || Enumerable.Contains(type.FullName, '<')) { continue; } if (!isGenericParam) { if ((object)baseType == null || baseType.IsAssignableFrom(type)) { goto IL_0269; } } else if ((!type.IsClass || !MiscUtility.HasFlag(baseType.GenericParameterAttributes, GenericParameterAttributes.NotNullableValueTypeConstraint)) && (!type.IsValueType || !MiscUtility.HasFlag(baseType.GenericParameterAttributes, GenericParameterAttributes.ReferenceTypeConstraint)) && !baseType.GetGenericParameterConstraints().Any((Type it) => !it.IsAssignableFrom(type))) { goto IL_0269; } goto end_IL_009f; IL_0269: set.Add(type); end_IL_009f:; } catch { } } } public static bool IsEnumerable(Type type) { return Instance.Internal_IsEnumerable(type); } protected virtual bool Internal_IsEnumerable(Type type) { return typeof(IEnumerable).IsAssignableFrom(type); } public static bool TryGetEnumerator(object ienumerable, out IEnumerator enumerator) { return Instance.Internal_TryGetEnumerator(ienumerable, out enumerator); } protected virtual bool Internal_TryGetEnumerator(object list, out IEnumerator enumerator) { enumerator = (list as IEnumerable).GetEnumerator(); return true; } public static bool TryGetEntryType(Type enumerableType, out Type type) { return Instance.Internal_TryGetEntryType(enumerableType, out type); } protected virtual bool Internal_TryGetEntryType(Type enumerableType, out Type type) { if (enumerableType.IsArray) { type = enumerableType.GetElementType(); return true; } Type[] interfaces = enumerableType.GetInterfaces(); foreach (Type type2 in interfaces) { if (type2.IsGenericType) { Type genericTypeDefinition = type2.GetGenericTypeDefinition(); if ((object)genericTypeDefinition == typeof(IEnumerable<>) || (object)genericTypeDefinition == typeof(IList<>) || (object)genericTypeDefinition == typeof(ICollection<>)) { type = type2.GetGenericArguments()[0]; return true; } } } type = typeof(object); return false; } public static bool IsDictionary(Type type) { return Instance.Internal_IsDictionary(type); } protected virtual bool Internal_IsDictionary(Type type) { return typeof(IDictionary).IsAssignableFrom(type); } public static bool TryGetDictEnumerator(object dictionary, out IEnumerator<DictionaryEntry> dictEnumerator) { return Instance.Internal_TryGetDictEnumerator(dictionary, out dictEnumerator); } protected virtual bool Internal_TryGetDictEnumerator(object dictionary, out IEnumerator<DictionaryEntry> dictEnumerator) { dictEnumerator = EnumerateDictionary((IDictionary)dictionary); return true; } private IEnumerator<DictionaryEntry> EnumerateDictionary(IDictionary dict) { IDictionaryEnumerator enumerator = dict.GetEnumerator(); while (enumerator.MoveNext()) { yield return new DictionaryEntry(enumerator.Key, enumerator.Value); } } public static bool TryGetEntryTypes(Type dictionaryType, out Type keys, out Type values) { return Instance.Internal_TryGetEntryTypes(dictionaryType, out keys, out values); } protected virtual bool Internal_TryGetEntryTypes(Type dictionaryType, out Type keys, out Type values) { Type[] interfaces = dictionaryType.GetInterfaces(); foreach (Type type in interfaces) { if (type.IsGenericType && (object)type.GetGenericTypeDefinition() == typeof(IDictionary<, >)) { Type[] genericArguments = type.GetGenericArguments(); keys = genericArguments[0]; values = genericArguments[1]; return true; } } keys = typeof(object); values = typeof(object); return false; } } public abstract class RuntimeHelper { internal static RuntimeHelper Instance { get; private set; } internal static void Init() { Instance = new MonoProvider(); Instance.OnInitialize(); } protected internal abstract void OnInitialize(); public static Coroutine StartCoroutine(IEnumerator routine) { return Instance.Internal_StartCoroutine(routine); } protected internal abstract Coroutine Internal_StartCoroutine(IEnumerator routine); public static void StopCoroutine(Coroutine coroutine) { Instance.Internal_StopCoroutine(coroutine); } protected internal abstract void Internal_StopCoroutine(Coroutine coroutine); public static T AddComponent<T>(GameObject obj, Type type) where T : Component { return Instance.Internal_AddComponent<T>(obj, type); } protected internal abstract T Internal_AddComponent<T>(GameObject obj, Type type) where T : Component; public static ScriptableObject CreateScriptable(Type type) { return Instance.Internal_CreateScriptable(type); } protected internal abstract ScriptableObject Internal_CreateScriptable(Type type); public static string LayerToName(int layer) { return Instance.Internal_LayerToName(layer); } protected internal abstract string Internal_LayerToName(int layer); public static T[] FindObjectsOfTypeAll<T>() where T : Object { return Instance.Internal_FindObjectsOfTypeAll<T>(); } public static Object[] FindObjectsOfTypeAll(Type type) { return Instance.Internal_FindObjectsOfTypeAll(type); } protected internal abstract T[] Internal_FindObjectsOfTypeAll<T>() where T : Object; protected internal abstract Object[] Internal_FindObjectsOfTypeAll(Type type); public static void GraphicRaycast(GraphicRaycaster raycaster, PointerEventData data, List<RaycastResult> list) { Instance.Internal_GraphicRaycast(raycaster, data, list); } protected internal abstract void Internal_GraphicRaycast(GraphicRaycaster raycaster, PointerEventData data, List<RaycastResult> list); public static GameObject[] GetRootGameObjects(Scene scene) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return Instance.Internal_GetRootGameObjects(scene); } protected internal abstract GameObject[] Internal_GetRootGameObjects(Scene scene); public static int GetRootCount(Scene scene) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return Instance.Internal_GetRootCount(scene); } protected internal abstract int Internal_GetRootCount(Scene scene); public static void SetColorBlockAuto(Selectable selectable, Color baseColor) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Instance.Internal_SetColorBlock(selectable, baseColor, baseColor * 1.2f, baseColor * 0.8f); } public static void SetColorBlock(Selectable selectable, ColorBlock colors) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) Instance.Internal_SetColorBlock(selectable, colors); } protected internal abstract void Internal_SetColorBlock(Selectable selectable, ColorBlock colors); public static void SetColorBlock(Selectable selectable, Color? normal = null, Color? highlighted = null, Color? pressed = null, Color? disabled = null) { Instance.Internal_SetColorBlock(selectable, normal, highlighted, pressed, disabled); } protected internal abstract void Internal_SetColorBlock(Selectable selectable, Color? normal = null, Color? highlighted = null, Color? pressed = null, Color? disabled = null); } internal class UniversalBehaviour : MonoBehaviour { internal static UniversalBehaviour Instance { get; private set; } internal static void Setup() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("UniverseLibBehaviour"); Object.DontDestroyOnLoad((Object)(object)val); ((Object)val).hideFlags = (HideFlags)(((Object)val).hideFlags | 0x3D); Instance = val.AddComponent<UniversalBehaviour>(); } internal void Update() { Universe.Update(); } } public static class Universe { public enum GlobalState { WaitingToSetup, SettingUp, SetupCompleted } public const string NAME = "UniverseLib"; public const string VERSION = "1.5.8"; public const string AUTHOR = "Sinai, yukieiji"; public const string GUID = "com.sinai.universelib"; private static float startupDelay; private static Action<string, LogType> logHandler; public static RuntimeContext Context { get; } = RuntimeContext.Mono; public static GlobalState CurrentGlobalState { get; private set; } internal static Harmony Harmony { get; } = new Harmony("com.sinai.universelib"); private static event Action OnInitialized; public static void Init(Action onInitialized = null, Action<string, LogType> logHandler = null) { Init(1f, onInitialized, logHandler, default(UniverseLibConfig)); } public static void Init(float startupDelay, Action onInitialized, Action<string, LogType> logHandler, UniverseLibConfig config) { if (CurrentGlobalState == GlobalState.SetupCompleted) { InvokeOnInitialized(onInitialized); return; } if (startupDelay > Universe.startupDelay) { Universe.startupDelay = startupDelay; } ConfigManager.LoadConfig(config); OnInitialized += onInitialized; if (logHandler != null && Universe.logHandler == null) { Universe.logHandler = logHandler; } if (CurrentGlobalState == GlobalState.WaitingToSetup) { CurrentGlobalState = GlobalState.SettingUp; Log("UniverseLib 1.5.8 initializing..."); UniversalBehaviour.Setup(); ReflectionUtility.Init(); RuntimeHelper.Init(); RuntimeHelper.Instance.Internal_StartCoroutine(SetupCoroutine()); Log("Finished UniverseLib initial setup."); } } internal static void Update() { UniversalUI.Update(); } private static IEnumerator SetupCoroutine() { yield return null; Stopwatch sw = new Stopwatch(); sw.Start(); while (ReflectionUtility.Initializing || (float)sw.ElapsedMilliseconds * 0.001f < startupDelay) { yield return null; } InputManager.Init(); UniversalUI.Init(); Log("UniverseLib 1.5.8 initialized."); CurrentGlobalState = GlobalState.SetupCompleted; InvokeOnInitialized(Universe.OnInitialized); } private static void InvokeOnInitialized(Action onInitialized) { if (onInitialized == null) { return; } Delegate[] invocationList = onInitialized.GetInvocationList(); foreach (Delegate @delegate in invocationList) { try { @delegate.DynamicInvoke(); } catch (Exception arg) { LogWarning($"Exception invoking onInitialized callback! {arg}"); } } } internal static void Log(object message) { Log(message, (LogType)3); } internal static void LogWarning(object message) { Log(message, (LogType)2); } internal static void LogError(object message) { Log(message, (LogType)0); } private static void Log(object message, LogType logType) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (logHandler != null) { logHandler("[UniverseLib] " + (message?.ToString() ?? string.Empty), logType); } } internal static bool Patch(Type type, string methodName, MethodType methodType, Type[] arguments = null, MethodInfo prefix = null, MethodInfo postfix = null, MethodInfo finalizer = null) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Invalid comparison between Unknown and I4 //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Expected O, but got Unknown try { if (1 == 0) { } string text = (((int)methodType == 1) ? "get_" : (((int)methodType != 2) ? string.Empty : "set_")); if (1 == 0) { } string text2 = text; MethodInfo methodInfo = ((arguments == null) ? type.GetMethod(text2 + methodName, AccessTools.all) : type.GetMethod(text2 + methodName, AccessTools.all, null, arguments, null)); if ((object)methodInfo == null) { return false; } PatchProcessor val = Harmony.CreateProcessor((MethodBase)methodInfo); if ((object)prefix != null) { val.AddPrefix(new HarmonyMethod(prefix)); } if ((object)postfix != null) { val.AddPostfix(new HarmonyMethod(postfix)); } if ((object)finalizer != null) { val.AddFinalizer(new HarmonyMethod(finalizer)); } val.Patch(); return true; } catch (Exception arg) { LogWarning($"\t Exception patching {type.FullName}.{methodName}: {arg}"); return false; } } internal static bool Patch(Type type, string[] possibleNames, MethodType methodType, Type[] arguments = null, MethodInfo prefix = null, MethodInfo postfix = null, MethodInfo finalizer = null) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) foreach (string methodName in possibleNames) { if (Patch(type, methodName, methodType, arguments, prefix, postfix, finalizer)) { return true; } } return false; } internal static bool Patch(Type type, string[] possibleNames, MethodType methodType, Type[][] possibleArguments, MethodInfo prefix = null, MethodInfo postfix = null, MethodInfo finalizer = null) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) foreach (string methodName in possibleNames) { foreach (Type[] arguments in possibleArguments) { if (Patch(type, methodName, methodType, arguments, prefix, postfix, finalizer)) { return true; } } } return false; } internal static bool Patch(Type type, string methodName, MethodType methodType, Type[][] possibleArguments, MethodInfo prefix = null, MethodInfo postfix = null, MethodInfo finalizer = null) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) foreach (Type[] arguments in possibleArguments) { if (Patch(type, methodName, methodType, arguments, prefix, postfix, finalizer)) { return true; } } return false; } } } namespace UniverseLib.Utility { public static class ArgumentUtility { public static readonly Type[] EmptyTypes = new Type[0]; public static readonly object[] EmptyArgs = new object[0]; public static readonly Type[] ParseArgs = new Type[1] { typeof(string) }; } public static class IOUtility { private static readonly char[] invalidDirectoryCharacters = Path.GetInvalidPathChars(); private static readonly char[] invalidFilenameCharacters = Path.GetInvalidFileNameChars(); public static string EnsureValidFilePath(string fullPathWithFile) { fullPathWithFile = string.Concat(fullPathWithFile.Split(invalidDirectoryCharacters)); Directory.CreateDirectory(Path.GetDirectoryName(fullPathWithFile)); return fullPathWithFile; } public static string EnsureValidFilename(string filename) { return string.Concat(filename.Split(invalidFilenameCharacters)); } } public static class MiscUtility { public static bool ContainsIgnoreCase(this string _this, string s) { return CultureInfo.CurrentCulture.CompareInfo.IndexOf(_this, s, CompareOptions.IgnoreCase) >= 0; } public static bool HasFlag(this Enum flags, Enum value) { try { ulong num = Convert.ToUInt64(value); return (Convert.ToUInt64(flags) & num) == num; } catch { long num2 = Convert.ToInt64(value); return (Convert.ToInt64(flags) & num2) == num2; } } public static bool EndsWith(this StringBuilder sb, string _string) { int length = _string.Length; if (sb.Length < length) { return false; } int num = 0; int num2 = sb.Length - length; while (num2 < sb.Length) { if (sb[num2] != _string[num]) { return false; } num2++; num++; } return true; } } public static class ParseUtility { internal delegate object ParseMethod(string input); internal delegate string ToStringMethod(object obj); public static readonly string NumberFormatString = "0.####"; private static readonly Dictionary<int, string> numSequenceStrings = new Dictionary<int, string>(); private static readonly HashSet<Type> nonPrimitiveTypes = new HashSet<Type> { typeof(string), typeof(decimal), typeof(DateTime) }; private static readonly HashSet<Type> formattedTypes = new HashSet<Type> { typeof(float), typeof(double), typeof(decimal) }; private static readonly Dictionary<string, string> typeInputExamples = new Dictionary<string, string>(); private static readonly Dictionary<string, ParseMethod> customTypes = new Dictionary<string, ParseMethod> { { typeof(Vector2).FullName, TryParseVector2 }, { typeof(Vector3).FullName, TryParseVector3 }, { typeof(Vector4).FullName, TryParseVector4 }, { typeof(Quaternion).FullName, TryParseQuaternion }, { typeof(Rect).FullName, TryParseRect }, { typeof(Color).FullName, TryParseColor }, { typeof(Color32).FullName, TryParseColor32 }, { typeof(LayerMask).FullName, TryParseLayerMask } }; private static readonly Dictionary<string, ToStringMethod> customTypesToString = new Dictionary<string, ToStringMethod> { { typeof(Vector2).FullName, Vector2ToString }, { typeof(Vector3).FullName, Vector3ToString }, { typeof(Vector4).FullName, Vector4ToString }, { typeof(Quaternion).FullName, QuaternionToString }, { typeof(Rect).FullName, RectToString }, { typeof(Color).FullName, ColorToString }, { typeof(Color32).FullName, Color32ToString }, { typeof(LayerMask).FullName, LayerMaskToString } }; public static string FormatDecimalSequence(params object[] numbers) { if (numbers.Length == 0) { return null; } return string.Format(CultureInfo.CurrentCulture, GetSequenceFormatString(numbers.Length), numbers); } internal static string GetSequenceFormatString(int count) { if (count <= 0) { return null; } if (numSequenceStrings.ContainsKey(count)) { return numSequenceStrings[count]; } string[] array = new string[count]; for (int i = 0; i < count; i++) { array[i] = $"{{{i}:{NumberFormatString}}}"; } string text = string.Join(" ", array); numSequenceStrings.Add(count, text); return text; } public static bool CanParse(Type type) { return !string.IsNullOrEmpty(type?.FullName) && (type.IsPrimitive || type.IsEnum || nonPrimitiveTypes.Contains(type) || customTypes.ContainsKey(type.FullName)); } public static bool CanParse<T>() { return CanParse(typeof(T)); } public static bool TryParse<T>(string input, out T obj, out Exception parseException) { object obj2; bool result = TryParse(input, typeof(T), out obj2, out parseException); if (obj2 != null) { obj = (T)obj2; } else { obj = default(T); } return result; } public static bool TryParse(string input, Type type, out object obj, out Exception parseException) { obj = null; parseException = null; if ((object)type == null) { return false; } if ((object)type == typeof(string)) { obj = input; return true; } if (type.IsEnum) { try { obj = Enum.Parse(type, input); return true; } catch (Exception e) { parseException = e.GetInnerMostException(); return false; } } try { if (customTypes.ContainsKey(type.FullName)) { obj = customTypes[type.FullName](input); } else { obj = AccessTools.Method(type, "Parse", ArgumentUtility.ParseArgs, (Type[])null).Invoke(null, new object[1] { input }); } return true; } catch (Exception e2) { Exception innerMostException = e2.GetInnerMostException(); parseException = innerMostException; } return false; } public static string ToStringForInput<T>(object obj) { return ToStringForInput(obj, typeof(T)); } public static string ToStringForInput(object obj, Type type) { if ((object)type == null || obj == null) { return null; } if ((object)type == typeof(string)) { return obj as string; } if (type.IsEnum) { return Enum.IsDefined(type, obj) ? Enum.GetName(type, obj) : obj.ToString(); } try { if (customTypes.ContainsKey(type.FullName)) { return customTypesToString[type.FullName](obj); } if (formattedTypes.Contains(type)) { return AccessTools.Method(type, "ToString", new Type[2] { typeof(string), typeof(IFormatProvider) }, (Type[])null).Invoke(obj, new object[2] { NumberFormatString, CultureInfo.CurrentCulture }) as string; } return obj.ToString(); } catch (Exception arg) { Universe.LogWarning($"Exception formatting object for input: {arg}"); return null; } } public static string GetExampleInput<T>() { return GetExampleInput(typeof(T)); } public static string GetExampleInput(Type type) { if (!typeInputExamples.ContainsKey(type.AssemblyQualifiedName)) { try { if (type.IsEnum) { typeInputExamples.Add(type.AssemblyQualifiedName, Enum.GetNames(type).First()); } else { object obj = Activator.CreateInstance(type); typeInputExamples.Add(type.AssemblyQualifiedName, ToStringForInput(obj, type)); } } catch (Exception message) { Universe.LogWarning("Exception generating default instance for example input for '" + type.FullName + "'"); Universe.Log(message); return ""; } } return typeInputExamples[type.AssemblyQualifiedName]; } internal static object TryParseVector2(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); string[] array = input.Split(new char[1] { ' ' }); val.x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); return val; } internal static string Vector2ToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Vector2 val) || 1 == 0) { return null; } return FormatDecimalSequence(val.x, val.y); } internal static object TryParseVector3(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); string[] array = input.Split(new char[1] { ' ' }); val.x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val.z = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); return val; } internal static string Vector3ToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Vector3 val) || 1 == 0) { return null; } return FormatDecimalSequence(val.x, val.y, val.z); } internal static object TryParseVector4(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) Vector4 val = default(Vector4); string[] array = input.Split(new char[1] { ' ' }); val.x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val.z = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); val.w = float.Parse(array[3].Trim(), CultureInfo.CurrentCulture); return val; } internal static string Vector4ToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Vector4 val) || 1 == 0) { return null; } return FormatDecimalSequence(val.x, val.y, val.z, val.w); } internal static object TryParseQuaternion(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); string[] array = input.Split(new char[1] { ' ' }); if (array.Length == 4) { Quaternion val2 = default(Quaternion); val2.x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val2.y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val2.z = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); val2.w = float.Parse(array[3].Trim(), CultureInfo.CurrentCulture); return val2; } val.x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val.z = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); return Quaternion.Euler(val); } internal static string QuaternionToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Quaternion val) || 1 == 0) { return null; } Vector3 eulerAngles = ((Quaternion)(ref val)).eulerAngles; return FormatDecimalSequence(eulerAngles.x, eulerAngles.y, eulerAngles.z); } internal static object TryParseRect(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) Rect val = default(Rect); string[] array = input.Split(new char[1] { ' ' }); ((Rect)(ref val)).x = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); ((Rect)(ref val)).y = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); ((Rect)(ref val)).width = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); ((Rect)(ref val)).height = float.Parse(array[3].Trim(), CultureInfo.CurrentCulture); return val; } internal static string RectToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Rect val) || 1 == 0) { return null; } return FormatDecimalSequence(((Rect)(ref val)).x, ((Rect)(ref val)).y, ((Rect)(ref val)).width, ((Rect)(ref val)).height); } internal static object TryParseColor(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) Color val = default(Color); string[] array = input.Split(new char[1] { ' ' }); val.r = float.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.g = float.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val.b = float.Parse(array[2].Trim(), CultureInfo.CurrentCulture); if (array.Length > 3) { val.a = float.Parse(array[3].Trim(), CultureInfo.CurrentCulture); } else { val.a = 1f; } return val; } internal static string ColorToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Color val) || 1 == 0) { return null; } return FormatDecimalSequence(val.r, val.g, val.b, val.a); } internal static object TryParseColor32(string input) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) Color32 val = default(Color32); string[] array = input.Split(new char[1] { ' ' }); val.r = byte.Parse(array[0].Trim(), CultureInfo.CurrentCulture); val.g = byte.Parse(array[1].Trim(), CultureInfo.CurrentCulture); val.b = byte.Parse(array[2].Trim(), CultureInfo.CurrentCulture); if (array.Length > 3) { val.a = byte.Parse(array[3].Trim(), CultureInfo.CurrentCulture); } else { val.a = byte.MaxValue; } return val; } internal static string Color32ToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) if (!(obj is Color32 val) || 1 == 0) { return null; } return $"{val.r} {val.g} {val.b} {val.a}"; } internal static object TryParseLayerMask(string input) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return LayerMask.op_Implicit(int.Parse(input)); } internal static string LayerMaskToString(object obj) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (!(obj is LayerMask val) || 1 == 0) { return null; } return ((LayerMask)(ref val)).value.ToString(); } } public static class SignatureHighlighter { public const string NAMESPACE = "#a8a8a8"; public const string CONST = "#92c470"; public const string CLASS_STATIC = "#3a8d71"; public const string CLASS_INSTANCE = "#2df7b2"; public const string STRUCT = "#0fba3a"; public const string INTERFACE = "#9b9b82"; public const string FIELD_STATIC = "#8d8dc6"; public const string FIELD_INSTANCE = "#c266ff"; public const string METHOD_STATIC = "#b55b02"; public const string METHOD_INSTANCE = "#ff8000"; public const string PROP_STATIC = "#588075"; public const string PROP_INSTANCE = "#55a38e"; public const string LOCAL_ARG = "#a6e9e9"; public const string OPEN_COLOR = "<color="; public const string CLOSE_COLOR = "</color>"; public const string OPEN_ITALIC = "<i>"; public const string CLOSE_ITALIC = "</i>"; public static readonly Regex ArrayTokenRegex = new Regex("\\[,*?\\]"); private static readonly Regex colorTagRegex = new Regex("<color=#?[\\d|\\w]*>"); public static readonly Color StringOrange = new Color(0.83f, 0.61f, 0.52f); public static readonly Color EnumGreen = new Color(0.57f, 0.76f, 0.43f); public static readonly Color KeywordBlue = new Color(0.3f, 0.61f, 0.83f); public static readonly string keywordBlueHex = KeywordBlue.ToHex(); public static readonly Color NumberGreen = new Color(0.71f, 0.8f, 0.65f); private static readonly Dictionary<string, string> typeToRichType = new Dictionary<string, string>(); private static readonly Dictionary<string, string> highlightedMethods = new Dictionary<string, string>(); private static readonly Dictionary<Type, string> builtInTypesToShorthand = new Dictionary<Type, string> { { typeof(object), "object" }, { typeof(string), "string" }, { typeof(bool), "bool" }, { typeof(byte), "byte" }, { typeof(sbyte), "sbyte" }, { typeof(char), "char" }, { typeof(decimal), "decimal" }, { typeof(double), "double" }, { typeof(float), "float" }, { typeof(int), "int" }, { typeof(uint), "uint" }, { typeof(long), "long" }, { typeof(ulong), "ulong" }, { typeof(short), "short" }, { typeof(ushort), "ushort" }, { typeof(void), "void" } }; public static string Parse(Type type, bool includeNamespace, MemberInfo memberInfo = null) { if ((object)type == null) { throw new ArgumentNullException("type"); } if (memberInfo is MethodInfo method) { return ParseMethod(method); } if (memberInfo is ConstructorInfo ctor) { return ParseConstructor(ctor); } StringBuilder stringBuilder = new StringBuilder(); if (type.IsByRef) { AppendOpenColor(stringBuilder, "#" + keywordBlueHex).Append("ref ").Append("</color>"); } Type type2 = type; while (type2.HasElementType) { type2 = type2.GetElementType(); } includeNamespace &= !builtInTypesToShorthand.ContainsKey(type2); if (!type.IsGenericParameter && (!type.HasElementType || !type.GetElementType().IsGenericParameter) && includeNamespace && TryGetNamespace(type, out var ns)) { AppendOpenColor(stringBuilder, "#a8a8a8").Append(ns).Append("</color>").Append('.'); } stringBuilder.Append(ProcessType(type)); if ((object)memberInfo != null) { stringBuilder.Append('.'); int index = stringBuilder.Length - 1; AppendOpenColor(stringBuilder, GetMemberInfoColor(memberInfo, out var isStatic)).Append(memberInfo.Name).Append("</color>"); if (isStatic) { stringBuilder.Insert(index, "<i>"); stringBuilder.Append("</i>"); } } return stringBuilder.ToString(); } private static string ProcessType(Type type) { string key = type.ToString(); if (typeToRichType.ContainsKey(key)) { return typeToRichType[key]; } StringBuilder stringBuilder = new StringBuilder(); if (!type.IsGenericParameter) { int length = stringBuilder.Length; Type declaringType = type.DeclaringType; while ((object)declaringType != null) { stringBuilder.Insert(length, HighlightType(declaringType) + "."); declaringType = declaringType.DeclaringType; } stringBuilder.Append(HighlightType(type)); if (type.IsGenericType) { ProcessGenericArguments(type, stringBuilder); } } else { stringBuilder.Append("<color=").Append("#92c470").Append('>') .Append(type.Name) .Append("</color>"); } string text = stringBuilder.ToString(); typeToRichType.Add(key, text); return text; } internal static string GetClassColor(Type type) { if (type.IsAbstract && type.IsSealed) { return "#3a8d71"; } if (type.IsEnum || type.IsGenericParameter) { return "#92c470"; } if (type.IsValueType) { return "#0fba3a"; } if (type.IsInterface) { return "#9b9b82"; } return "#2df7b2"; } private static bool TryGetNamespace(Type type, out string ns) { return !string.IsNullOrEmpty(ns = type.Namespace?.Trim()); } private static StringBuilder AppendOpenColor(StringBuilder sb, string color) { return sb.Append("<color=").Append(color).Append('>'); } private static string HighlightType(Type type) { StringBuilder stringBuilder = new StringBuilder(); if (type.IsByRef) { type = type.GetElementType(); } int num = 0; Match match = ArrayTokenRegex.Match(type.Name); if (match != null && match.Success) { num = 1 + match.Value.Count((char c) => c == ','); type = type.GetElementType(); } if (builtInTypesToShorthand.TryGetValue(type, out var value)) { AppendOpenColor(stringBuilder, "#" + keywordBlueHex).Append(value).Append("</color>"); } else { stringBuilder.Append("<color=" + GetClassColor(type) + ">").Append(type.Name).Append("</color>"); } if (num > 0) { stringBuilder.Append('[').Append(new string(',', num - 1)).Append(']'); } return stringBuilder.ToString(); } private static void ProcessGenericArguments(Type type, StringBuilder sb) { List<Type> list = type.GetGenericArguments().ToList(); for (int i = 0; i < sb.Length; i++) { if (!list.Any()) { break; } if (sb[i] != '`') { continue; } int num = i; i++; StringBuilder stringBuilder = new StringBuilder(); for (; char.IsDigit(sb[i]); i++) { stringBuilder.Append(sb[i]); } string text = stringBuilder.ToString(); int num2 = int.Parse(text); sb.Remove(num, text.Length + 1); int num3 = 1; num++; while (num3 < "</color>".Length && sb[num] == "</color>"[num3]) { num3++; num++; } sb.Insert(num, '<'); num++; int length = sb.Length; while (num2 > 0 && list.Any()) { num2--; Type type2 = list.First(); list.RemoveAt(0); sb.Insert(num, ProcessType(type2)); if (num2 > 0) { num += sb.Length - length; sb.Insert(num, ", "); num += 2; length = sb.Length; } } sb.Insert(num + sb.Length - length, '>'); } } public static string RemoveHighlighting(string _string) { if (_string == null) { throw new ArgumentNullException("_string"); } _string = _string.Replace("<i>", string.Empty); _string = _string.Replace("</i>", string.Empty); _string = colorTagRegex.Replace(_string, string.Empty); _string = _string.Replace("</color>", string.Empty); return _string; } [Obsolete("Use 'ParseMethod(MethodInfo)' instead (rename).")] public static string HighlightMethod(MethodInfo method) { return ParseMethod(method); } public static string ParseMethod(MethodInfo method) { string key = GeneralExtensions.FullDescription((MethodBase)method); if (highlightedMethods.ContainsKey(key)) { return highlightedMethods[key]; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(Parse(method.DeclaringType, includeNamespace: false)); stringBuilder.Append('.'); string text = ((!method.IsStatic) ? "#ff8000" : "#b55b02"); stringBuilder.Append("<color=" + text + ">" + method.Name + "</color>"); if (method.IsGenericMethod) { stringBuilder.Append("<"); Type[] genericArguments = method.GetGenericArguments(); for (int i = 0; i < genericArguments.Length; i++) { Type type = genericArguments[i]; if (type.IsGenericParameter) { stringBuilder.Append("<color=#92c470>" + genericArguments[i].Name + "</color>"); } else { stringBuilder.Append(Parse(type, includeNamespace: false)); } if (i < genericArguments.Length - 1) { stringBuilder.Append(", "); } } stringBuilder.Append(">"); } stringBuilder.Append('('); ParameterInfo[] parameters = method.GetParameters(); for (int j = 0; j < parameters.Length; j++) { ParameterInfo parameterInfo = parameters[j]; stringBuilder.Append(Parse(parameterInfo.ParameterType, includeNamespace: false)); if (j < parameters.Length - 1) { stringBuilder.Append(", "); } } stringBuilder.Append(')'); string text2 = stringBuilder.ToString(); highlightedMethods.Add(key, text2); return text2; } [Obsolete("Use 'ParseConstructor(ConstructorInfo)' instead (rename).")] public static string HighlightConstructor(ConstructorInfo ctor) { return ParseConstructor(ctor); } public static string ParseConstructor(ConstructorInfo ctor) { string key = GeneralExtensions.FullDescription((MethodBase)ctor); if (highlightedMethods.ContainsKey(key)) { return highlightedMethods[key]; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(Parse(ctor.DeclaringType, includeNamespace: false)); string value = stringBuilder.ToString(); stringBuilder.Append('.'); stringBuilder.Append(value); stringBuilder.Append('('); ParameterInfo[] parameters = ctor.GetParameters(); for (int i = 0; i < parameters.Length; i++) { ParameterInfo parameterInfo = parameters[i]; stringBuilder.Append(Parse(parameterInfo.ParameterType, includeNamespace: false)); if (i < parameters.Length - 1) { stringBuilder.Append(", "); } } stringBuilder.Append(')'); string text = stringBuilder.ToString(); highlightedMethods.Add(key, text); return text; } public static string GetMemberInfoColor(MemberInfo memberInfo, out bool isStatic) { isStatic = false; if (memberInfo is FieldInfo fieldInfo) { if (fieldInfo.IsStatic) { isStatic = true; return "#8d8dc6"; } return "#c266ff"; } if (memberInfo is MethodInfo methodInfo) { if (methodInfo.IsStatic) { isStatic = true; return "#b55b02"; } return "#ff8000"; } if (memberInfo is PropertyInfo propertyInfo) { if (propertyInfo.GetAccessors(nonPublic: true)[0].IsStatic) { isStatic = true; return "#588075"; } return "#55a38e"; } if (memberInfo is ConstructorInfo) { isStatic = true; return "#2df7b2"; } throw new NotImplementedException(memberInfo.GetType().Name + " is not supported"); } } public static class ToStringUtility { internal static Dictionary<string, MethodInfo> toStringMethods = new Dictionary<string, MethodInfo>(); private const string nullString = "<color=grey>null</color>"; private const string nullUnknown = "<color=grey>null</color> (?)"; private const string destroyedString = "<color=red>Destroyed</color>"; private const string untitledString = "<i><color=grey>untitled</color></i>"; private const string eventSystemNamespace = "UnityEngine.EventSystem"; public static string PruneString(string s, int chars = 200, int lines = 5) { if (string.IsNullOrEmpty(s)) { return s; } StringBuilder stringBuilder = new StringBuilder(Math.Max(chars, s.Length)); int num = 0; for (int i = 0; i < s.Length; i++) { if (num >= lines || i >= chars) { stringBuilder.Append("..."); break; } char c = s[i]; if (c == '\r' || c == '\n') { num++; } stringBuilder.Append(c); } return stringBuilder.ToString(); } public static string ToStringWithType(object value, Type fallbackType, bool includeNamespace = true) { if (value.IsNullOrDestroyed() && (object)fallbackType == null) { return "<color=grey>null</color> (?)"; } Type type = value?.GetActualType() ?? fallbackType; string text = SignatureHighlighter.Parse(type, includeNamespace); StringBuilder stringBuilder = new StringBuilder(); if (value.IsNullOrDestroyed()) { if (value == null) { stringBuilder.Append("<color=grey>null</color>"); AppendRichType(stringBuilder, text); return stringBuilder.ToString(); } stringBuilder.Append("<color=red>Destroyed</color>"); AppendRichType(stringBuilder, text); return stringBuilder.ToString(); } Object val = (Object)((value is Object) ? value : null); if (val != null) { if (string.IsNullOrEmpty(val.name)) { stringBuilder.Append("<i><color=grey>untitled</color></i>"); } else { stringBuilder.Append('"'); stringBuilder.Append(PruneString(val.name, 50, 1)); stringBuilder.Append('"'); } AppendRichType(stringBuilder, text); } else if (type.FullName.StartsWith("UnityEngine.EventSystem")) { stringBuilder.Append(text); } else { string text2 = ToString(value); if (type.IsGenericType || text2 == type.FullName || text2 == type.FullName + " " + type.FullName || text2 == "Il2Cpp" + type.FullName || type.FullName == "Il2Cpp" + text2) { stringBuilder.Append(text); } else { stringBuilder.Append(PruneString(text2)); AppendRichType(stringBuilder, text); } } return stringBuilder.ToString(); } private static void AppendRichType(StringBuilder sb, string richType) { sb.Append(' '); sb.Append('('); sb.Append(richType); sb.Append(')'); } private static string ToString(object value) { if (value.IsNullOrDestroyed()) { if (value == null) { return "<color=grey>null</color>"; } return "<color=red>Destroyed</color>"; } Type actualType = value.GetActualType(); if (!toStringMethods.ContainsKey(actualType.AssemblyQualifiedName)) { MethodInfo method = actualType.GetMethod("ToString", ArgumentUtility.EmptyTypes); toStringMethods.Add(actualType.AssemblyQualifiedName, method); } value = value.TryCast(actualType); string theString; try { theString = (string)toStringMethods[actualType.AssemblyQualifiedName].Invoke(value, ArgumentUtility.EmptyArgs); } catch (Exception e) { theString = e.ReflectionExToString(); } return ReflectionUtility.ProcessTypeInString(actualType, theString); } } public static class UnityHelpers { private static PropertyInfo onEndEdit; public static bool OccuredEarlierThanDefault(this float time) { return Time.realtimeSinceStartup - 0.01f >= time; } public static bool OccuredEarlierThan(this float time, float secondsAgo) { return Time.realtimeSinceStartup - secondsAgo >= time; } public static bool IsNullOrDestroyed(this object obj, bool suppressWarning = true) { try { if (obj == null) { if (!suppressWarning) { Universe.LogWarning("The target instance is null!"); } return true; } Object val = (Object)((obj is Object) ? obj : null); if (val != null && !Object.op_Implicit(val)) { if (!suppressWarning) { Universe.LogWarning("The target UnityEngine.Object was destroyed!"); } return true; } return false; } catch { return true; } } public static string GetTransformPath(this Transform transform, bool includeSelf = false) { StringBuilder stringBuilder = new StringBuilder(); if (includeSelf) { stringBuilder.Append(((Object)transform).name); } while (Object.op_Implicit((Object)(object)transform.parent)) { transform = transform.parent; stringBuilder.Insert(0, '/'); stringBuilder.Insert(0, ((Object)transform).name); } return stringBuilder.ToString(); } public static string ToHex(this Color color) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) byte b = (byte)Mathf.Clamp(Mathf.RoundToInt(color.r * 255f), 0, 255); byte b2 = (byte)Mathf.Clamp(Mathf.RoundToInt(color.g * 255f), 0, 255); byte b3 = (byte)Mathf.Clamp(Mathf.RoundToInt(color.b * 255f), 0, 255); return $"{b:X2}{b2:X2}{b3:X2}"; } public static Color ToColor(this string _string) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) _string = _string.Replace("#", ""); if (_string.Length != 6) { return Color.magenta; } byte b = byte.Parse(_string.Substring(0, 2), NumberStyles.HexNumber); byte b2 = byte.Parse(_string.Substring(2, 2), NumberStyles.HexNumber); byte b3 = byte.Parse(_string.Substring(4, 2), NumberStyles.HexNumber); Color result = default(Color); result.r = (float)((decimal)b / 255m); result.g = (float)((decimal)b2 / 255m); result.b = (float)((decimal)b3 / 255m); result.a = 1f; return result; } public static UnityEvent<string> GetOnEndEdit(this InputField _this) { if ((object)onEndEdit == null) { onEndEdit = AccessTools.Property(typeof(InputField), "onEndEdit") ?? throw new Exception("Could not get InputField.onEndEdit property!"); } return onEndEdit.GetValue(_this, null).TryCast<UnityEvent<string>>(); } } } namespace UniverseLib.UI { public class UIBase { internal static readonly int TOP_SORTORDER = 30000; public string ID { get; } public GameObject RootObject { get; } public RectTransform RootRect { get; } public Canvas Canvas { get; } public Action UpdateMethod { get; } public PanelManager Panels { get; } public bool Enabled { get { return Object.op_Implicit((Object)(object)RootObject) && RootObject.activeSelf; } set { UniversalUI.SetUIActive(ID, value); } } public UIBase(string id, Action updateMethod) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrEmpty(id)) { throw new ArgumentException("Cannot register a UI with a null or empty id!"); } if (UniversalUI.registeredUIs.ContainsKey(id)) { throw new ArgumentException("A UI with the id '" + id + "' is already registered!"); } ID = id; UpdateMethod = updateMethod; RootObject = UIFactory.CreateUIObject(id + "_Root", UniversalUI.CanvasRoot); RootObject.SetActive(false); RootRect = RootObject.GetComponent<RectTransform>(); Canvas = RootObject.AddComponent<Canvas>(); Canvas.renderMode = (RenderMode)1; Canvas.referencePixelsPerUnit = 100f; Canvas.sortingOrder = TOP_SORTORDER; Canvas.overrideSorting = true; CanvasScaler val = RootObject.AddComponent<CanvasScaler>(); val.referenceResolution = new Vector2(1920f, 1080f); val.screenMatchMode = (ScreenMatchMode)1; RootObject.AddComponent<GraphicRaycaster>(); RectTransform component = RootObject.GetComponent<RectTransform>(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.pivot = new Vector2(0.5f, 0.5f); Panels = CreatePanelManager(); RootObject.SetActive(true); UniversalUI.registeredUIs.Add(id, this); UniversalUI.uiBases.Add(this); } protected virtual PanelManager CreatePanelManager() { return new PanelManager(this); } public void SetOnTop() { RootObject.transform.SetAsLastSibling(); foreach (UIBase uiBasis in UniversalUI.uiBases) { int num = UniversalUI.CanvasRoot.transform.childCount - ((Transform)uiBasis.RootRect).GetSiblingIndex(); uiBasis.Canvas.sortingOrder = TOP_SORTORDER - num; } UniversalUI.uiBases.Sort((UIBase a, UIBase b) => b.RootObject.transform.GetSiblingIndex().CompareTo(a.RootObject.transform.GetSiblingIndex())); } internal void Update() { try { Panels.Update(); UpdateMethod?.Invoke(); } catch (Exception arg) { Universe.LogWarning($"Exception invoking update method for {ID}: {arg}"); } } } public static class UIFactory { internal static Vector2 largeElementSize = new Vector2(100f, 30f); internal static Vector2 smallElementSize = new Vector2(25f, 25f); internal static Color defaultTextColor = Color.white; public static GameObject CreateUIObject(string name, GameObject parent, Vector2 sizeDelta = default(Vector2)) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name) { layer = 5, hideFlags = (HideFlags)61 }; if (Object.op_Implicit((Object)(object)parent)) { val.transform.SetParent(parent.transform, false); } RectTransform val2 = val.AddComponent<RectTransform>(); val2.sizeDelta = sizeDelta; return val; } internal static void SetDefaultTextValues(Text text) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) ((Graphic)text).color = defaultTextColor; text.font = UniversalUI.DefaultFont; text.fontSize = 14; } internal static void SetDefaultSelectableValues(Selectable selectable) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) Navigation navigation = selectable.navigation; ((Navigation)(ref navigation)).mode = (Mode)4; selectable.navigation = navigation; RuntimeHelper.Instance.Internal_SetColorBlock(selectable, (Color?)new Color(0.2f, 0.2f, 0.2f), (Color?)new Color(0.3f, 0.3f, 0.3f), (Color?)new Color(0.15f, 0.15f, 0.15f), (Color?)null); } public static LayoutElement SetLayoutElement(GameObject gameObject, int? minWidth = null, int? minHeight = null, int? flexibleWidth = null, int? flexibleHeight = null, int? preferredWidth = null, int? preferredHeight = null, bool? ignoreLayout = null) { LayoutElement val = gameObject.GetComponent<LayoutElement>(); if (!Object.op_Implicit((Object)(object)val)) { val = gameObject.AddComponent<LayoutElement>(); } if (minWidth.HasValue) { val.minWidth = minWidth.Value; } if (minHeight.HasValue) { val.minHeight = minHeight.Value; } if (flexibleWidth.HasValue) { val.flexibleWidth = flexibleWidth.Value; } if (flexibleHeight.HasValue) { val.flexibleHeight = flexibleHeight.Value; } if (preferredWidth.HasValue) { val.preferredWidth = preferredWidth.Value; } if (preferredHeight.HasValue) { val.preferredHeight = preferredHeight.Value; } if (ignoreLayout.HasValue) { val.ignoreLayout = ignoreLayout.Value; } return val; } public static T SetLayoutGroup<T>(GameObject gameObject, bool? forceWidth = null, bool? forceHeight = null, bool? childControlWidth = null, bool? childControlHeight = null, int? spacing = null, int? padTop = null, int? padBottom = null, int? padLeft = null, int? padRight = null, TextAnchor? childAlignment = null) where T : HorizontalOrVerticalLayoutGroup { T val = gameObject.GetComponent<T>(); if (!Object.op_Implicit((Object)(object)val)) { val = gameObject.AddComponent<T>(); } return SetLayoutGroup(val, forceWidth, forceHeight, childControlWidth, childControlHeight, spacing, padTop, padBottom, padLeft, padRight, childAlignment); } public static T SetLayoutGroup<T>(T group, bool? forceWidth = null, bool? forceHeight = null, bool? childControlWidth = null, bool? childControlHeight = null, int? spacing = null, int? padTop = null, int? padBottom = null, int? padLeft = null, int? padRight = null, TextAnchor? childAlignment = null) where T : HorizontalOrVerticalLayoutGroup { //IL_0143: Unknown result type (might be due to invalid IL or missing references) if (forceWidth.HasValue) { ((HorizontalOrVerticalLayoutGroup)group).childForceExpandWidth = forceWidth.Value; } if (forceHeight.HasValue) { ((HorizontalOrVerticalLayoutGroup)group).childForceExpandHeight = forceHeight.Value; } if (childControlWidth.HasValue) { ((HorizontalOrVerticalLayoutGroup)(object)group).SetChildControlWidth(childControlWidth.Value); } if (childControlHeight.HasValue) { ((HorizontalOrVerticalLayoutGroup)(object)group).SetChildControlHeight(childControlHeight.Value); } if (spacing.HasValue) { ((HorizontalOrVerticalLayoutGroup)group).spacing = spacing.Value; } if (padTop.HasValue) { ((LayoutGroup)(object)group).padding.top = padTop.Value; } if (padBottom.HasValue) { ((LayoutGroup)(object)group).padding.bottom = padBottom.Value; } if (padLeft.HasValue) { ((LayoutGroup)(object)group).padding.left = padLeft.Value; } if (padRight.HasValue) { ((LayoutGroup)(object)group).padding.right = padRight.Value; } if (childAlignment.HasValue) { ((LayoutGroup)(object)group).childAlignment = childAlignment.Value; } return group; } public static GameObject CreatePanel(string name, GameObject parent, out GameObject contentHolder, Color? bgColor = null) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); UIFactory.SetLayoutGroup<VerticalLayoutGroup>(val, (bool?)true, (bool?)true, (bool?)true, (bool?)true, (int?)0, (int?)1, (int?)1, (int?)1, (int?)1, (TextAnchor?)null); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.anchoredPosition = Vector2.zero; component.sizeDelta = Vector2.zero; ((Graphic)val.AddComponent<Image>()).color = Color.black; val.AddComponent<RectMask2D>(); contentHolder = CreateUIObject("Content", val); Image val2 = contentHolder.AddComponent<Image>(); val2.type = (Type)3; ((Graphic)val2).color = (Color)((!bgColor.HasValue) ? new Color(0.07f, 0.07f, 0.07f) : bgColor.Value); UIFactory.SetLayoutGroup<VerticalLayoutGroup>(contentHolder, (bool?)true, (bool?)true, (bool?)true, (bool?)true, (int?)3, (int?)3, (int?)3, (int?)3, (int?)3, (TextAnchor?)null); return val; } public static GameObject CreateVerticalGroup(GameObject parent, string name, bool forceWidth, bool forceHeight, bool childControlWidth, bool childControlHeight, int spacing = 0, Vector4 padding = default(Vector4), Color bgColor = default(Color), TextAnchor? childAlignment = null) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); UIFactory.SetLayoutGroup<VerticalLayoutGroup>(val, (bool?)forceWidth, (bool?)forceHeight, (bool?)childControlWidth, (bool?)childControlHeight, (int?)spacing, (int?)(int)padding.x, (int?)(int)padding.y, (int?)(int)padding.z, (int?)(int)padding.w, childAlignment); Image val2 = val.AddComponent<Image>(); ((Graphic)val2).color = (Color)((bgColor == default(Color)) ? new Color(0.17f, 0.17f, 0.17f) : bgColor); return val; } public static GameObject CreateHorizontalGroup(GameObject parent, string name, bool forceExpandWidth, bool forceExpandHeight, bool childControlWidth, bool childControlHeight, int spacing = 0, Vector4 padding = default(Vector4), Color bgColor = default(Color), TextAnchor? childAlignment = null) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val, (bool?)forceExpandWidth, (bool?)forceExpandHeight, (bool?)childControlWidth, (bool?)childControlHeight, (int?)spacing, (int?)(int)padding.x, (int?)(int)padding.y, (int?)(int)padding.z, (int?)(int)padding.w, childAlignment); Image val2 = val.AddComponent<Image>(); ((Graphic)val2).color = (Color)((bgColor == default(Color)) ? new Color(0.17f, 0.17f, 0.17f) : bgColor); return val; } public static GameObject CreateGridGroup(GameObject parent, string name, Vector2 cellSize, Vector2 spacing, Color bgColor = default(Color)) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); GridLayoutGroup val2 = val.AddComponent<GridLayoutGroup>(); ((LayoutGroup)val2).childAlignment = (TextAnchor)0; val2.cellSize = cellSize; val2.spacing = spacing; Image val3 = val.AddComponent<Image>(); ((Graphic)val3).color = (Color)((bgColor == default(Color)) ? new Color(0.17f, 0.17f, 0.17f) : bgColor); return val; } public static Text CreateLabel(GameObject parent, string name, string defaultText, TextAnchor alignment = 3, Color color = default(Color), bool supportRichText = true, int fontSize = 14) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); Text val2 = val.AddComponent<Text>(); SetDefaultTextValues(val2); val2.text = defaultText; ((Graphic)val2).color = ((color == default(Color)) ? defaultTextColor : color); val2.supportRichText = supportRichText; val2.alignment = alignment; val2.fontSize = fontSize; return val2; } public static ButtonRef CreateButton(GameObject parent, string name, string text, Color? normalColor = null) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) Color valueOrDefault = normalColor.GetValueOrDefault(); if (!normalColor.HasValue) { ((Color)(ref valueOrDefault))..ctor(0.25f, 0.25f, 0.25f); normalColor = valueOrDefault; } ButtonRef buttonRef = CreateButton(parent, name, text, default(ColorBlock)); RuntimeHelper instance = RuntimeHelper.Instance; Button component = buttonRef.Component; Color? normal = normalColor; Color? val = normalColor; float num = 1.2f; Color? highlighted = (val.HasValue ? new Color?(val.GetValueOrDefault() * num) : null); val = normalColor; num = 0.7f; instance.Internal_SetColorBlock((Selectable)(object)component, normal, highlighted, val.HasValue ? new Color?(val.GetValueOrDefault() * num) : null); return buttonRef; } public static ButtonRef CreateButton(GameObject parent, string name, string text, ColorBlock colors) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent, smallElementSize); GameObject val2 = CreateUIObject("Text", val); Image val3 = val.AddComponent<Image>(); val3.type = (Type)1; ((Graphic)val3).color = new Color(1f, 1f, 1f, 1f); Button val4 = val.AddComponent<Button>(); SetDefaultSelectableValues((Selectable)(object)val4); ((ColorBlock)(ref colors)).colorMultiplier = 1f; RuntimeHelper.Instance.Internal_SetColorBlock((Selectable)(object)val4, colors); Text val5 = val2.AddComponent<Text>(); val5.text = text; SetDefaultTextValues(val5); val5.alignment = (TextAnchor)4; RectTransform component = val2.GetComponent<RectTransform>(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.sizeDelta = Vector2.zero; SetButtonDeselectListener(val4); return new ButtonRef(val4); } internal static void SetButtonDeselectListener(Button button) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown ((UnityEvent)button.onClick).AddListener((UnityAction)delegate { ((Selectable)button).OnDeselect((BaseEventData)null); }); } public static GameObject CreateSlider(GameObject parent, string name, out Slider slider) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent, smallElementSize); GameObject val2 = CreateUIObject("Background", val); GameObject val3 = CreateUIObject("Fill Area", val); GameObject val4 = CreateUIObject("Fill", val3); GameObject val5 = CreateUIObject("Handle Slide Area", val); GameObject val6 = CreateUIObject("Handle", val5); Image val7 = val2.AddComponent<Image>(); val7.type = (Type)1; ((Graphic)val7).color = new Color(0.15f, 0.15f, 0.15f, 1f); RectTransform component = val2.GetComponent<RectTransform>(); component.anchorMin = new Vector2(0f, 0.25f); component.anchorMax = new Vector2(1f, 0.75f); component.sizeDelta = new Vector2(0f, 0f); RectTransform component2 = val3.GetComponent<RectTransform>(); component2.anchorMin = new Vector2(0f, 0.25f); component2.anchorMax = new Vector2(1f, 0.75f); component2.anchoredPosition = new Vector2(-5f, 0f); component2.sizeDelta = new Vector2(-20f, 0f); Image val8 = val4.AddComponent<Image>(); val8.type = (Type)1; ((Graphic)val8).color = new Color(0.3f, 0.3f, 0.3f, 1f); val4.GetComponent<RectTransform>().sizeDelta = new Vector2(10f, 0f); RectTransform component3 = val5.GetComponent<RectTransform>(); component3.sizeDelta = new Vector2(-20f, 0f); component3.anchorMin = new Vector2(0f, 0f); component3.anchorMax = new Vector2(1f, 1f); Image val9 = val6.AddComponent<Image>(); ((Graphic)val9).color = new Color(0.5f, 0.5f, 0.5f, 1f); val6.GetComponent<RectTransform>().sizeDelta = new Vector2(20f, 0f); slider = val.AddComponent<Slider>(); slider.fillRect = val4.GetComponent<RectTransform>(); slider.handleRect = val6.GetComponent<RectTransform>(); ((Selectable)slider).targetGraphic = (Graphic)(object)val9; slider.direction = (Direction)0; RuntimeHelper.Instance.Internal_SetColorBlock((Selectable)(object)slider, (Color?)new Color(0.4f, 0.4f, 0.4f), (Color?)new Color(0.55f, 0.55f, 0.55f), (Color?)new Color(0.3f, 0.3f, 0.3f), (Color?)null); return val; } public static GameObject CreateScrollbar(GameObject parent, string name, out Scrollbar scrollbar) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent, smallElementSize); GameObject val2 = CreateUIObject("Sliding Area", val); GameObject val3 = CreateUIObject("Handle", val2); Image val4 = val.AddComponent<Image>(); val4.type = (Type)1; ((Graphic)val4).color = new Color(0.1f, 0.1f, 0.1f); Image val5 = val3.AddComponent<Image>(); val5.type = (Type)1; ((Graphic)val5).color = new Color(0.4f, 0.4f, 0.4f); RectTransform component = val2.GetComponent<RectTransform>(); component.sizeDelta = new Vector2(-20f, -20f); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; RectTransform component2 = val3.GetComponent<RectTransform>(); component2.sizeDelta = new Vector2(20f, 20f); scrollbar = val.AddComponent<Scrollbar>(); scrollbar.handleRect = component2; ((Selectable)scrollbar).targetGraphic = (Graphic)(object)val5; SetDefaultSelectableValues((Selectable)(object)scrollbar); return val; } public static GameObject CreateToggle(GameObject parent, string name, out Toggle toggle, out Text text, Color bgColor = default(Color), int checkWidth = 20, int checkHeight = 20) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent, smallElementSize); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val, (bool?)false, (bool?)false, (bool?)true, (bool?)true, (int?)5, (int?)0, (int?)0, (int?)0, (int?)0, (TextAnchor?)(TextAnchor)3); toggle = val.AddComponent<Toggle>(); toggle.isOn = true; SetDefaultSelectableValues((Selectable)(object)toggle); Toggle t2 = toggle; ((UnityEvent<bool>)(object)toggle.onValueChanged).AddListener((UnityAction<bool>)delegate { ((Selectable)t2).OnDeselect((BaseEventData)null); }); GameObject val2 = CreateUIObject("Background", val); Image val3 = val2.AddComponent<Image>(); ((Graphic)val3).color = (Color)((bgColor == default(Color)) ? new Color(0.04f, 0.04f, 0.04f, 0.75f) : bgColor); UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(val2, (bool?)true, (bool?)true, (bool?)true, (bool?)true, (int?)0, (int?)2, (int?)2, (int?)2, (int?)2, (TextAnchor?)null); SetLayoutElement(val2, checkWidth, flexibleWidth: 0, minHeight: checkHeight, flexibleHeight: 0); GameObject val4 = CreateUIObject("Checkmark", val2); Image val5 = val4.AddComponent<Image>(); ((Graphic)val5).color = new Color(0.8f, 1f, 0.8f, 0.3f); GameObject val6 = CreateUIObject("Label", val); text = val6.AddComponent<Text>(); text.text = ""; text.alignment = (TextAnchor)3; SetDefaultTextValues(text); SetLayoutElement(val6, 0, flexibleWidth: 0, minHeight: checkHeight, flexibleHeight: 0); toggle.graphic = (Graphic)(object)val5; ((Selectable)toggle).targetGraphic = (Graphic)(object)val3; return val; } public static InputFieldRef CreateInputField(GameObject parent, string name, string placeHolderText) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) GameObject val = CreateUIObject(name, parent); Image val2 = val.AddComponent<Image>(); val2.type = (Type)1; ((Graphic)val2).color = new Color(0f, 0f, 0f, 0.5f); InputField val3 = val.AddComponent<InputField>(); Navigation navigation = ((Selectable)val3).navigation; ((Navigation)(ref navigation)).mode = (Mode)0; ((Selectable)val3).navigation = navigation; val3.lineType = (LineType)0; ((Selectable)val3).interactable = true; ((Selectable)val3).transition = (Transition)1; ((Selectable)val3).targetGraphic = (Graphic)(object)val2; RuntimeHelper.Instance.Internal_SetColorBlock((Selectable)(object)val3, (Color?)new Color(1f, 1f, 1f, 1f), (Color?)new Color(0.95f, 0.95f, 0.95f, 1f), (Color?)new Color(0.78f, 0.78f, 0.78f, 1f), (Color?)null); GameObject val4 = CreateUIObject("TextArea", val); val4.AddComponent<RectMask2D>(); RectTransform component = val4.GetComponent<RectTransform>(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.offsetMin = Vector2.zero; component.offsetMax = Vector2.zero; GameObject val5 = CreateUIObject("Placeholder", val4); Text val6 = val5.AddComponent<Text>(); SetDefaultTextValues(val6); val6.text = placeHolderText ?? "..."; ((Graphic)val6).color = new Color(0.5f, 0.5f, 0.5f, 1f); val6.horizontalOverflow = (HorizontalWrapMode)0; val6.alignment = (TextAnchor)3; val6.fontSize = 14; RectTransform component2 = val5.GetComponent<RectTransform>(); component2.anchorMin = Vector2.zero; component2.anchorMax = Vector2.one; component2.offsetMin = Vector2.zero; component2.offsetMax = Vector2.zero; val3.placeholder = (Graphic)(object)val6; GameObject val7 = CreateUIObject("Text", val4); Text val8 = val7.AddComponent<Text>(); SetDefaultTextValues(val8); val8.text = ""; ((Graphic)val8).color = new Color(1f, 1f, 1f, 1f); val8.horizontalOverflow = (HorizontalWrapMode)0; val8.alignment = (TextAnchor)3; val8.fontSize = 14; RectTransform component3 = val7.GetComponent<RectTransform>(); component3.anchorMin = Vector2.zero; component3.anchorMax = Vector2.one; component3.offsetMin = Vector2.zero; component3.offsetMax = Vector2.zero; val3.textComponent = val8; val3.characterLimit = 16000; return new InputFieldRef(val3); } public static GameObject CreateDropdown(GameObject parent, string name, out Dropdown dropdown, string defaultItemText, int itemFontSize, Action<int> onValueChanged, string[] defaultOptions = null) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid