Esempio n. 1
0
            public static bool TryGetWindowLocker(Type windowType, out EditorWindowLocker locker)
            {
                if (typeof(EditorWindow).IsAssignableFrom(windowType) && GetLockTrackerField(windowType) != null)
                {
                    locker = new EditorWindowLocker(windowType);
                    return(true);
                }

                locker = null;
                return(false);
            }
Esempio n. 2
0
        public static void CloneWindow()
        {
            var window    = EditorWindow.focusedWindow;
            var newWindow = UnityEngine.Object.Instantiate(window);

            var windowType = newWindow.GetType();

            if (!_cachedLockers.TryGetValue(windowType, out var locker))
            {
                if (EditorWindowLocker.TryGetWindowLocker(windowType, out locker))
                {
                    _cachedLockers[windowType] = locker;
                }
            }

            locker?.LockWindow(newWindow, true);

            newWindow.Show();
            SetupRect(newWindow, window.position);
        }