Esempio n. 1
0
 /// <summary>
 /// Clears the memberBuildList and builds it again from scratch.
 ///
 /// This usually happens based on memberBuildList contents, so GenerateMemberBuildList should always be called before this method.
 ///
 /// Note that this does NOT rebuild the member build list - RebuildMemberBuildListAndMembers can be used to achieve that.
 /// </summary>
 protected virtual void RebuildMemberBuildList()
 {
     memberBuildList.Clear();
     if (memberBuildState == MemberBuildState.BuildListGenerated)
     {
         memberBuildState = MemberBuildState.Unstarted;
     }
     GenerateMemberBuildList();
 }
Esempio n. 2
0
        /// <summary>
        /// Populates memberBuildInfo list with LinkedMemberInfos for member drawers that should be built
        /// if/when the member drawers become visible in the inspector (usually when the parent is unfolded).
        /// This should be called only once between Create and Dispose being called, during the Setup phase.
        /// </summary>
        private void GenerateMemberBuildList()
        {
                        #if DEV_MODE && PI_ASSERTATIONS
            if (memberBuildState == MemberBuildState.BuildListGenerated)
            {
                Debug.LogError(Msg(ToString(), ".GenerateMemberBuildList was called but memberBuildState was ", memberBuildState));
            }
                        #endif

            DoGenerateMemberBuildList();

            if (memberBuildState == MemberBuildState.Unstarted)
            {
                memberBuildState = MemberBuildState.BuildListGenerated;
            }
            OnAfterMemberBuildListGenerated();
        }
Esempio n. 3
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();
        }