99 lines
3.3 KiB
C#
99 lines
3.3 KiB
C#
using JetBrains.Collections.Viewable;
|
|
using JetBrains.Lifetimes;
|
|
using JetBrains.RiderFlow.Core.Launchers;
|
|
using JetBrains.RiderFlow.Core.ReEditor.Notifications;
|
|
using JetBrains.RiderFlow.Core.Requirements;
|
|
using JetBrains.RiderFlow.Core.Services.Caches.RecentFiles;
|
|
using JetBrains.RiderFlow.Core.Threading;
|
|
using JetBrains.RiderFlow.Core.UI.SceneIntegration;
|
|
using JetBrains.RiderFlow.Core.UI.SceneIntegration.Tools.SceneHighlighting;
|
|
using JetBrains.RiderFlow.Core.UI.SearchEverywhere;
|
|
using JetBrains.RiderFlow.Since2021_2.SceneIntegration;
|
|
using UnityEditor;
|
|
using UnityEditor.Overlays;
|
|
using UnityEngine;
|
|
|
|
namespace JetBrains.RiderFlow.Since2021_2
|
|
{
|
|
[InitializeOnLoad]
|
|
public class DelayedEntryPoint
|
|
{
|
|
|
|
static DelayedEntryPoint()
|
|
{
|
|
SearchEverywhereWindow.Settings = SearchWindowSettings.instance;
|
|
RecentFilesCacheController.Cache = RecentFilesCache.instance;
|
|
ProgressManagerOwner.ProgressManager = new ProgressManager();
|
|
EditorApplication.delayCall += OnEnable;
|
|
SceneIntegrationSettings.IsClassicToolboxEnabled = false;
|
|
}
|
|
|
|
protected static void OnEnable()
|
|
{
|
|
if (!IsPrimaryUnityProcess())
|
|
return;
|
|
|
|
InstallBackendRequirement.Instance.IsReady.AdviseUntil(Lifetime.Eternal, v =>
|
|
{
|
|
if (v)
|
|
{
|
|
MainThreadScheduler.Instance.Queue(StartToolbar);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
});
|
|
|
|
Launcher.Run();
|
|
}
|
|
|
|
private static bool IsPrimaryUnityProcess()
|
|
{
|
|
if (AssetDatabase.IsAssetImportWorkerProcess())
|
|
return false;
|
|
|
|
#if UNITY_2021_1_OR_NEWER
|
|
if (UnityEditor.MPE.ProcessService.level == UnityEditor.MPE.ProcessLevel.Secondary)
|
|
return false;
|
|
#elif UNITY_2020_2_OR_NEWER
|
|
if (UnityEditor.MPE.ProcessService.level == UnityEditor.MPE.ProcessLevel.Slave)
|
|
return false;
|
|
#elif UNITY_2020_1_OR_NEWER
|
|
if (Unity.MPE.ProcessService.level == Unity.MPE.ProcessLevel.UMP_SLAVE)
|
|
return false;
|
|
#endif
|
|
return true;
|
|
}
|
|
|
|
private static void StartToolbar()
|
|
{
|
|
if (SceneView.lastActiveSceneView.TryGetOverlay(RiderFlowToolbarConstants.ToolbarId, out var toolbox))
|
|
{
|
|
SceneIntegrationActions.ChangeToolbarDisplay(new VisualElementToolbarDisplay(toolbox));
|
|
|
|
if (!SceneIntegrationSettings.AutoShowToolbox)
|
|
return;
|
|
|
|
if (toolbox.displayed)
|
|
return;
|
|
|
|
toolbox.collapsed = false;
|
|
toolbox.displayed = true;
|
|
toolbox.Undock();
|
|
toolbox.floatingPosition = new Vector2(150, 150);
|
|
|
|
UpdateLayout(toolbox);
|
|
}
|
|
}
|
|
|
|
private static void UpdateLayout(Overlay toolbox)
|
|
{
|
|
var layoutSetter = typeof(Overlay).GetProperty(nameof(Overlay.layout))?.GetSetMethod(true);
|
|
if (layoutSetter == null)
|
|
return;
|
|
|
|
layoutSetter.Invoke(toolbox, new object[] { Layout.HorizontalToolbar });
|
|
}
|
|
}
|
|
}
|