internal RuntimeUnityEditorCore(MonoBehaviour pluginObject, ILoggerWrapper logger, string configPath) { if (Instance != null) { throw new InvalidOperationException("Can only create one instance of the Core object"); } CompositeResolver.RegisterAndSetAsDefault(GeneratedResolver.Instance, BuiltinResolver.Instance, PrimitiveObjectResolver.Instance); PluginObject = pluginObject; Logger = logger; Instance = this; InitNativeGUI(); Inspector = new Inspector.Inspector(targetTransform => TreeViewer.SelectAndShowObject(targetTransform)); TreeViewer = new ObjectTreeViewer(pluginObject); TreeViewer.InspectorOpenCallback = items => { Inspector.InspectorClear(); foreach (var stackEntry in items) { Inspector.InspectorPush(stackEntry); } }; if (UnityFeatureHelper.SupportsVectrosity) { GizmoDrawer = new GizmoDrawer(pluginObject); TreeViewer.TreeSelectionChangedCallback = transform => GizmoDrawer.UpdateState(transform); } if (UnityFeatureHelper.SupportsCursorIndex && UnityFeatureHelper.SupportsXml) { try { Repl = new ReplWindow(Path.Combine(configPath, "RuntimeUnityEditor.Autostart.cs")); Repl.RunAutostart(); } catch (Exception ex) { Logger.Log(LogLevel.Warning, "Failed to load REPL - " + ex.Message); } } }
public void Setup(ILoggerWrapper logger) { INSTANCE = this; LOGGER = logger; SettingsData = SettingsManager.LoadOrCreate(); DnSpyHelper.SetPath(SettingsData.DNSpyPath, false); SettingsViewer = new SettingsViewer(); TreeViewer = new ObjectTreeViewer(this, _gameObjectSearcher) { InspectorOpenCallback = items => { Inspector.InspectorClear(); foreach (var stackEntry in items) { Inspector.InspectorPush(stackEntry); } } }; _gizmoDrawer = new GizmoDrawer(this); TreeViewer.TreeSelectionChangedCallback = transform => _gizmoDrawer.UpdateState(transform); RegisterWindow(TreeViewer); if (UnityFeatureHelper.SupportsCursorIndex && UnityFeatureHelper.SupportsXml) { try { Repl = new ReplWindow("RuntimeUnityEditor.Autostart.cs"); Repl.RunAutostart(); windows.Add(Repl); } catch (Exception ex) { LOGGER.Log(LogLevel.Warning, "Failed to load REPL - " + ex.Message); } } Inspector = new Inspector.Inspector(targetTransform => TreeViewer.SelectAndShowObject(targetTransform), Repl); RegisterWindow(Inspector); PinnedVariablesData = new PinnedVariablesData(); PinnedVariablesViewer = new PinnedVariablesViewer(PinnedVariablesData); RegisterWindow(PinnedVariablesViewer); }