/// <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(); }
/// <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(); }
/// <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(); }