Esempio n. 1
0
        /// <inheritdoc />
        protected override void DoBuildMembers()
        {
                        #if DEV_MODE
            Debug.Log(ToString() + ".DoBuildMembers()");
                        #endif

            ParentDrawerUtility.BuildMembers(DrawerProvider, this, memberBuildList, ref members);

            if (inspector.Preferences.drawScriptReferenceFields || DebugMode)
            {
                var monoScript = MonoScript;
                if (monoScript != null)
                {
                    DrawerArrayPool.InsertAt(ref members, 0, ScriptReferenceDrawer.Create(MonoScript, this, false), true);
                }
            }

            if (DebugMode && (members.Length == 0 || !(members[0] is DebugModeDisplaySettingsDrawer)))
            {
                                #if DEV_MODE
                Debug.Log("InsertAt(0, DebugModeDisplaySettingsDrawer)");
                                #endif

                DrawerArrayPool.InsertAt(ref members, 0, SpaceDrawer.Create(7f, this), true);
                DrawerArrayPool.InsertAt(ref members, 0, DebugModeDisplaySettingsDrawer.Create(this, debugModeDisplaySettings), true);
                DrawerArrayPool.InsertAt(ref members, 0, SpaceDrawer.Create(7f, this), true);
            }

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(!members.ContainsNullMembers());
                        #endif
        }
Esempio n. 2
0
        /// <summary>
        /// Populates the members array with member drawers using information provided by the memberBuildList.
        /// Also should handle resizing the members array to the correct length, when necessary.
        /// GenerateMemberBuildList should always get called before this.
        /// </summary>
        protected void BuildMembers()
        {
                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(memberBuildState == MemberBuildState.BuildListGenerated, ToString() + ".BuildMembers was called but memberBuildState was " + memberBuildState);
            if (memberBuildList.ContainsNullMembers())
            {
                Debug.LogError(ToString() + " memberBuildList had empty elements: " + StringUtils.ToString(memberBuildList));
            }
                        #endif

            DoBuildMembers();

                        #if DEV_MODE && PI_ASSERTATIONS
            if (Members.ContainsNullMembers())
            {
                Debug.LogError("buildState=" + memberBuildState + ", DebugMode=" + DebugMode + ", members:\n" + StringUtils.ToString(members, "\n"));
            }
                        #endif

            memberBuildState = MemberBuildState.MembersBuilt;

            ParentDrawerUtility.SendOnParentAssignedEvents(this);

            OnAfterMembersBuilt();
        }
Esempio n. 3
0
 /// <inheritdoc cref="IDrawer.OnKeyboardInputGiven" />
 public override bool OnKeyboardInputGiven(Event inputEvent, KeyConfigs keys)
 {
     if (ParentDrawerUtility.HandleKeyboardInput(this, inputEvent, keys))
     {
         return(true);
     }
     return(base.OnKeyboardInputGiven(inputEvent, keys));
 }
Esempio n. 4
0
        /// <inheritdoc/>
        protected override void DoGenerateMemberBuildList()
        {
            ParentDrawerUtility.GetMemberBuildList(this, MemberHierarchy, ref memberBuildList, false);

                        #if DEV_MODE && PI_ASSERTATIONS
            Debug.Assert(DrawInSingleRow || members.Length < 5, Msg(ToString(), " built ", Members.Length, " members but DrawInSingleRow was ", DrawInSingleRow, ": ", StringUtils.ToString(members)));
                        #endif
        }
Esempio n. 5
0
        /// <inheritdoc/>
        public virtual void UpdateVisibleMembers()
        {
                        #if DEV_MODE && DEBUG_UPDATE_VISIBLE_MEMBERS
            Debug.Log(StringUtils.ToColorizedString(ToString(), ".UpdateVisibleMembers with inactive=", inactive));
                        #endif

            if (ParentDrawerUtility.UpdateVisibleMembers(this) || assumeVisibleMembersChangedDuringNextUpdateVisibleMembers)
            {
                OnVisibleMembersChanged();
                OnChildLayoutChanged();
            }
        }
Esempio n. 6
0
        /// <inheritdoc cref="IDrawer.TestVisibleChildrenUntilTrue" />
        public override IDrawer TestVisibleChildrenUntilTrue(Func <IDrawer, bool> test)
        {
            var result = ParentDrawerUtility.TestVisibleChildrenUntilTrue(test, this);

            if (result == null)
            {
                if (test(this))
                {
                    return(this);
                }
            }
            return(result);
        }
Esempio n. 7
0
        /// <inheritdoc/>
        public override bool DrawBodySingleRow(Rect position)
        {
            var rect1 = position;

            rect1.width -= addButtonWidth + buttonOffset;

            var rect2 = rect1;

            rect2.x    += rect1.width + buttonOffset;
            rect2.width = addButtonWidth;

            return(ParentDrawerUtility.DrawBodySingleRow(this, rect1, rect2));
        }
Esempio n. 8
0
        /// <inheritdoc cref="IDrawer.DetectMouseoverForSelfAndChildren" />
        public override bool DetectMouseoverForSelfAndChildren(Vector2 mousePosition)
        {
            if (ClickToSelectArea.Contains(mousePosition))
            {
                                #if DEV_MODE && DEBUG_MOUSEOVER_DETECTION
                Debug.Log(StringUtils.ToColorizedString("DetectMouseoverForSubjectAndChildren(", subjethisct, "): ", true, "! (via self)"));
                                #endif
                return(true);
            }

            var memberCoordinateSpaceOffset = bodyLastDrawPosition.position - lastDrawPosition.position;

            return(ParentDrawerUtility.DetectMouseoverForVisibleMembers(this, mousePosition - memberCoordinateSpaceOffset));
        }
        /// <inheritdoc/>
        public override bool DrawBodySingleRow(Rect position)
        {
                        #if DEV_MODE || PROFILE_POWER_INSPECTOR
            Profiler.BeginSample("ParentDrawer.DrawBodySingleRow(3)");
                        #endif

            var memberPos = position;
            memberPos.width /= 3f;

            ParentDrawerUtility.HandleTooltipBeforeControl(Label, memberPos);

            bool dirty = false;

            IDrawer[] members;
            bool      draw1, draw2, draw3;
            ParentDrawerUtility.UpdateMembersToDraw(this, out members, out draw1, out draw2, out draw3);

            var guiColorWas = GUI.color;
            GUI.color = Value.ShowFields ? guiColorWas : new Color(1f, 1f, 1f, 0.5f);

            if (draw1 && members[0].Draw(memberPos))
            {
                dirty = true;
            }

            memberPos.x += memberPos.width;

            GUI.color = Value.ShowProperties ? guiColorWas : new Color(1f, 1f, 1f, 0.5f);

            if (draw2 && members[1].Draw(memberPos))
            {
                dirty = true;
            }

            memberPos.x += memberPos.width;

            GUI.color = Value.ShowMethods ? guiColorWas : new Color(1f, 1f, 1f, 0.5f);

            if (draw3 && members[2].Draw(memberPos))
            {
                dirty = true;
            }

            GUI.color = guiColorWas;

                        #if DEV_MODE || PROFILE_POWER_INSPECTOR
            Profiler.EndSample();
                        #endif
            return(dirty);
        }
Esempio n. 10
0
        /// <inheritdoc />
        protected override void BuildContextMenu(ref Menu menu, bool extendedMenu)
        {
            if (BuildContextMenuItemsStartingFromBaseClass)
            {
                base.BuildContextMenu(ref menu, extendedMenu);
            }

            ParentDrawerUtility.AddMenuItemsFromContextMenuAttribute(GetValues(), ref menu);

            if (!BuildContextMenuItemsStartingFromBaseClass)
            {
                base.BuildContextMenu(ref menu, extendedMenu);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Called when drawer were fully folded (closedness was 0)
        /// and just now started unfolding (closedness is > 0), or when they
        /// were at least partially unfolded (closedness was > 0) and just became
        /// fully folded (closedness is 0).
        /// </summary>
        /// <param name="unfolded"> True if became partially unfolded, false if became fully folded. </param>
        private void OnFullClosednessChanged(bool unfolded)
        {
            if (inactive)
            {
                return;
            }

            ParentDrawerUtility.OnMemberVisibilityChanged(this, unfolded);

            if (memberBuildState == MemberBuildState.MembersBuilt)
            {
                UpdateVisibleMembers();
            }

            UpdatePrefixDrawer();
        }
Esempio n. 12
0
        /// <inheritdoc />
        public override bool DrawBodySingleRow(Rect position)
        {
            switch (controls)
            {
            case 0:
                return(ParentDrawerUtility.DrawBodySingleRow(this, nullTogglePosition, objectReferenceFieldPosition));

            case 1:
                return(ParentDrawerUtility.DrawBodySingleRow(this, objectReferenceFieldPosition, methodPopupFieldPosition));

            case 2:
                return(ParentDrawerUtility.DrawBodySingleRow(this, nullTogglePosition, instanceTypePopupFieldPosition, methodPopupFieldPosition));

            default:
                return(false);
            }
        }
Esempio n. 13
0
        /// <inheritdoc />
        protected override void DoBuildMembers()
        {
                        #if DEV_MODE
            Debug.Log(ToString() + ".DoBuildMembers()");
                        #endif

            ParentDrawerUtility.BuildMembers(DrawerProvider, this, memberBuildList, ref members);

                        #if UNITY_EDITOR
            if (Platform.EditorMode && (inspector.Preferences.drawScriptReferenceFields || DebugMode))
            {
                var monoScript = MonoScript;
                if (monoScript != null)
                {
                    DrawerArrayPool.InsertAt(ref members, 0, ScriptReferenceDrawer.Create(MonoScript, this, false), true);
                }
            }
                        #endif
        }
Esempio n. 14
0
        /// <inheritdoc />
        protected override void DoGenerateMemberBuildList()
        {
            if (DebugMode)
            {
                if (debugModeDisplaySettings == null)
                {
                    debugModeDisplaySettings = new DebugModeDisplaySettings()
                    {
                        Static = true
                    };
                }

                                #if DEV_MODE
                Debug.Log("Generating members using DebugModeDisplaySettings " + debugModeDisplaySettings);
                                #endif

                Type.GetStaticInspectorViewables(ref linkedMemberHierarchy, null, ref memberBuildList, true, FieldVisibility.AllPublic, PropertyVisibility.AllPublic, MethodVisibility.AllPublic, debugModeDisplaySettings);
                return;
            }

            ParentDrawerUtility.GetStaticMemberBuildList(this, linkedMemberHierarchy, ref memberBuildList, FieldVisibility.AllPublic, PropertyVisibility.AllPublic, MethodVisibility.AllPublic);
        }
Esempio n. 15
0
        /// <inheritdoc cref="IDrawer.Dispose" />
        public override void Dispose()
        {
            inactive = true;

            ParentDrawerUtility.OnDisposing(Inspector, this);

            cachedValuesNeedUpdating = false;

                        #if ENABLE_SPREADING
            lastUpdateCachedValuesMemberIndex = -1;
                        #endif

            if (memberBuildState == MemberBuildState.MembersBuilt)
            {
                DisposeMembers();
            }

            DrawerArrayPool.Resize(ref members, 0);
            DrawerArrayPool.Resize(ref visibleMembers, 0);
            updateCachedValuesFor.Clear();

            memberBuildState = MemberBuildState.Unstarted;

            memberBuildList.Clear();

            assumeVisibleMembersChangedDuringNextUpdateVisibleMembers = true;

            labelLastDrawPosition.y      = -100f;
            labelLastDrawPosition.width  = 0f;
            labelLastDrawPosition.height = 0f;
            bodyLastDrawPosition.y       = -100f;
            bodyLastDrawPosition.width   = 0f;
            bodyLastDrawPosition.height  = 0f;

            base.Dispose();
        }
Esempio n. 16
0
        /// <inheritdoc cref="IDrawer.DetectMouseover" />
        public override bool DetectMouseover(Vector2 mousePosition)
        {
            if (ClickToSelectArea.Contains(mousePosition))
            {
                                #if DEV_MODE && DEBUG_MOUSEOVER_DETECTION
                Debug.Log(StringUtils.ToColorizedString("DetectMouseover(", this, "): Contains(mousePos): ", true, " with " + visibleMembers.Length + " VisibleMembers..."));
                                #endif

                if (PrefixResizerMouseovered)
                {
                                        #if DEV_MODE && DEBUG_MOUSEOVER_DETECTION
                    Debug.Log(StringUtils.ToColorizedString("DetectMouseover(", this, "): ", this == unityObject, " because !PrefixResizingEnabledOverControl and PrefixResizerMouseovered"));
                                        #endif
                    return(true);
                }

                var memberCoordinateSpaceOffset = bodyLastDrawPosition.position - lastDrawPosition.position;

                if (ParentDrawerUtility.DetectMouseoverForVisibleMembers(this, mousePosition - memberCoordinateSpaceOffset))
                {
                    return(false);
                }

                                #if DEV_MODE && DEBUG_MOUSEOVER_DETECTION
                Debug.Log(StringUtils.ToColorizedString("DetectMouseover(", this, "): ", true, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));
                                #endif

                return(true);
            }

                        #if DEV_MODE && DEBUG_MOUSEOVER_DETECTION
            Debug.Log(StringUtils.ToColorizedString("DetectMouseover(", this, "): ", ClickToSelectArea, ".MouseIsOver: ", false));
                        #endif

            return(false);
        }
Esempio n. 17
0
 /// <inheritdoc/>
 public virtual void SetMembers(IDrawer[] setMembers, bool sendVisibilityChangedEvents = true)
 {
     ParentDrawerUtility.SetMembers(this, ref members, setMembers, ref visibleMembers, ref memberBuildState, ref assumeVisibleMembersChangedDuringNextUpdateVisibleMembers, updateCachedValuesFor, sendVisibilityChangedEvents);
 }
Esempio n. 18
0
 /// <inheritdoc cref="IDrawer.GetNextSelectableDrawerRight" />
 public override IDrawer GetNextSelectableDrawerRight(bool moveToNextControlAfterReachingEnd, IDrawer requester)
 {
     return(ParentDrawerUtility.GetNextSelectableDrawerRight(this, moveToNextControlAfterReachingEnd, requester, !DrawInSingleRow));
 }
Esempio n. 19
0
 /// <param name="mousePosition"></param>
 /// <inheritdoc cref="IDrawer.DetectMouseover" />
 public override bool DetectMouseover(Vector2 mousePosition)
 {
     return(ParentDrawerUtility.DetectMouseover(this));
 }
Esempio n. 20
0
 /// <param name="mousePosition"></param>
 /// <inheritdoc cref="IDrawer.DetectMouseoverForSelfAndChildren" />
 public override bool DetectMouseoverForSelfAndChildren(Vector2 mousePosition)
 {
     return(ParentDrawerUtility.DetectMouseoverForSubjectAndChildren(this, mousePosition));
 }
Esempio n. 21
0
 /// <inheritdoc cref="IDrawer.GetNextSelectableDrawerDown" />
 public override IDrawer GetNextSelectableDrawerDown(int column, IDrawer requester)
 {
     return(ParentDrawerUtility.GetNextSelectableDrawerDown(this, column, requester, !DrawInSingleRow));
 }
Esempio n. 22
0
 /// <inheritdoc/>
 public virtual bool DrawBodyMultiRow(Rect position)
 {
     return(ParentDrawerUtility.DrawBodyMultiRow(this, position));
 }
Esempio n. 23
0
 /// <inheritdoc/>
 public virtual void SetUnfolded(bool setUnfolded, bool setChildrenAlso)
 {
     ParentDrawerUtility.SetUnfolded(this, setUnfolded, setChildrenAlso);
 }
Esempio n. 24
0
 /// <inheritdoc/>
 public int GetMemberRowIndex(IDrawer member)
 {
     return(ParentDrawerUtility.GetMemberRowIndex(this, member));
 }
Esempio n. 25
0
 /// <inheritdoc/>
 public override bool DrawBody(Rect position)
 {
     return(ParentDrawerUtility.DrawBody(this, position));
 }
Esempio n. 26
0
 /// <inheritdoc cref="IDrawer.GetOptimalPrefixLabelWidth" />
 public override float GetOptimalPrefixLabelWidth(int indentLevel)
 {
     return(ParentDrawerUtility.GetOptimalPrefixLabelWidth(this, indentLevel));
 }
Esempio n. 27
0
 /// <inheritdoc cref="IDrawer.OnFilterChanged" />
 public override void OnFilterChanged(SearchFilter filter)
 {
     ParentDrawerUtility.OnFilterChanged(this, filter, base.OnFilterChanged);
 }
Esempio n. 28
0
 /// <inheritdoc/>
 public sealed override bool PassesSearchFilter(SearchFilter filter)
 {
     return(ParentDrawerUtility.PassesSearchFilter(this, filter, SelfPassesSearchFilter));
 }
Esempio n. 29
0
 /// <inheritdoc/>
 public void SetVisibleMembers(IDrawer[] newVisibleMembers, bool sendVisibilityChangedEvents = true)
 {
     ParentDrawerUtility.SetVisibleMembers(this, ref visibleMembers, newVisibleMembers, updateCachedValuesFor, sendVisibilityChangedEvents, true);
 }
Esempio n. 30
0
 /// <inheritdoc/>
 public void SetMembers(IDrawer[] setMembers, IDrawer[] setVisibleMembers, bool sendVisibilityChangedEvents = true)
 {
     ParentDrawerUtility.SetMembers(this, ref members, setMembers, ref visibleMembers, setVisibleMembers, ref memberBuildState, updateCachedValuesFor, sendVisibilityChangedEvents);
 }