예제 #1
0
        public static TDrawerWindow Create <TDrawerWindow>(DrawerGroup drawer, Action doOnClosed = null) where TDrawerWindow : DrawerToWindow
        {
            var result = CreateInstance <TDrawerWindow>();

            result.drawer   = drawer;
            result.onClosed = doOnClosed;
            return(result);
        }
예제 #2
0
        public static TDrawerWindow Create <TDrawerWindow>([NotNull] Component[] targets, [NotNull] IInspector inspector, Action doOnClosed = null) where TDrawerWindow : DrawerToWindow
        {
            var drawers = DrawerGroup.Create(inspector);
            var members = drawers.Members;

            DrawerArrayPool.InsertAt(ref members, 0, inspector.DrawerProvider.GetForComponents(inspector, targets, drawers), false);
            drawers.SetMembers(members);
            return(Create <TDrawerWindow>(drawers, doOnClosed));
        }
예제 #3
0
        public static TDrawerWindow Create <TDrawerWindow>([NotNull] GameObject[] targets, [NotNull] IInspector inspector, Action doOnClosed = null) where TDrawerWindow : DrawerToWindow
        {
            var drawers = DrawerGroup.Create(inspector);
            var members = drawers.Members;

            DrawerArrayPool.InsertAt(ref members, 0, GameObjectDrawer.Create(targets, drawers, inspector), false);
            drawers.SetMembers(members);
            return(Create <TDrawerWindow>(drawers, doOnClosed));
        }
예제 #4
0
        public void Setup(IInspector inspector, Vector2 setScrollPos, bool setViewIsLocked, Action doOnLockedStateChanged = null)
        {
                        #if DEV_MODE
            Debug.Assert(Screen.width > 0f, "!  InspectorState.Setup called with Screen.width==0f! This should only be called from OnGUI! \nEvent was " + StringUtils.ToString(Event.current) + ", contentRect.width was " + contentRect.width);
                        #endif

            if (drawers == null)
            {
                drawers = DrawerGroup.Create(inspector, null, new GUIContent("Inspected"));
            }

            if (!TryRecoverAnyNullUnityObjects())
            {
                                #if DEV_MODE
                if (setViewIsLocked)
                {
                    Debug.LogWarning("InspectorState.Setup - changing setViewIsLocked to " + StringUtils.False + " because TryRecoverNullUnityObjects returned " + StringUtils.False);
                }
                                #endif
                setViewIsLocked = false;
            }

            scrollPos = setScrollPos;

                        #if DEV_MODE && DEBUG_VIEW_IS_LOCKED
            Debug.Log("viewIsLocked = " + StringUtils.ToColorizedString(setViewIsLocked));
                        #endif

            viewIsLocked = setViewIsLocked;

            // new test
            if (OnLockedStateChanged != null)
            {
                OnLockedStateChanged -= doOnLockedStateChanged;
                OnLockedStateChanged += doOnLockedStateChanged;
            }

            if (contentRect.width <= 0f)
            {
                if (Screen.width > 0f)
                {
                    windowRect.width  = Screen.width - 4f;
                    contentRect.width = windowRect.width;
                }
                else
                {
                    InspectorUtility.ActiveInspector.OnNextLayout(() =>
                    {
                        if (contentRect.width <= 0f)
                        {
                            windowRect.width  = Screen.width - 4f;
                            contentRect.width = windowRect.width;
                        }
                    });
                }
            }
        }
예제 #5
0
 protected virtual void Dispose()
 {
     if (onClosed != null)
     {
         var action = onClosed;
         onClosed = null;
         action();
     }
     drawer.Dispose();
     drawer = null;
 }
예제 #6
0
        public static DrawerGroup Create(IInspector inspector, IParentDrawer parent = null, GUIContent label = null)
        {
            DrawerGroup result;

            if (!DrawerPool.TryGet(out result))
            {
                result = new DrawerGroup();
            }
            result.Setup(inspector, parent, label);
            result.LateSetup();
            return(result);
        }
예제 #7
0
 public static TDrawerWindow Create <TDrawerWindow>(IInspector inspector, Action doOnClosed = null) where TDrawerWindow : DrawerToWindow
 {
     return(Create <TDrawerWindow>(DrawerGroup.Create(inspector), doOnClosed));
 }
예제 #8
0
 private void OnInspectedTargetsChanged(Object[] inspected, DrawerGroup drawers)
 {
     UpdateVisibleItems();
 }