protected override void Destroy() { loadTables.Clear(); loadTablesOperation.Clear(); m_PreloadTablesOperations.Clear(); m_TableReferences.Clear(); GenericPool <PreLoadTablesOperation <TTable, TEntry> > .Release(this); }
internal void Release() { foreach (var f in Fragments) { ReleaseFragment(f); } Fragments.Clear(); GenericPool <Message> .Release(this); }
public void Clear() { Assert.IsNotNull(m_Requests); foreach (var pair in m_Requests) { pair.Value.Clear(); GenericPool <Set> .Release(pair.Value); } m_Requests.Clear(); }
/// <summary> /// Returns a Fragment back to its ObjectPool so it can be used again. /// </summary> /// <param name="fragment"></param> public void ReleaseFragment(MessageFragment fragment) { if (fragment is WritableMessageFragment wmf) { GenericPool <WritableMessageFragment> .Release(wmf); } else if (fragment is ReadOnlyMessageFragment romf) { GenericPool <ReadOnlyMessageFragment> .Release(romf); } }
protected override void Destroy() { AddressablesInterface.Release(m_LoadTableOperation); GenericPool <LoadAssetOperation <TObject> > .Release(this); }
protected override void Destroy() { base.Destroy(); GenericPool <PreloadDatabaseOperation <TTable, TEntry> > .Release(this); }
internal static void GetMenuOptions(int mask, string[] flagNames, int[] flagValues, out string buttonText, out string buttonMixedValuesText, out string[] optionNames, out int[] optionMaskValues, out int[] selectedOptions, Type enumType = null) { const int everythingValue = ~0; bool hasNothingName = flagValues[0] == 0; bool hasEverythingName = flagValues[flagValues.Length - 1] == everythingValue; var nothingName = (hasNothingName ? flagNames[0] : "Nothing"); var everythingName = (hasEverythingName ? flagNames[flagValues.Length - 1] : "Everything"); var optionCount = flagNames.Length + (hasNothingName ? 0 : 1) + (hasEverythingName ? 0 : 1); var flagCount = flagNames.Length - (hasNothingName ? 1 : 0) - (hasEverythingName ? 1 : 0); // These indices refer to flags that are not 0 and everythingValue var flagStartIndex = (hasNothingName ? 1 : 0); var flagEndIndex = flagStartIndex + flagCount; // Options names optionNames = GetBuffer(s_OptionNames, optionCount); optionNames[0] = nothingName; optionNames[1] = everythingName; for (var flagIndex = flagStartIndex; flagIndex < flagEndIndex; flagIndex++) { var optionIndex = flagIndex - flagStartIndex + 2; optionNames[optionIndex] = flagNames[flagIndex]; } var flagMask = 0; // Disjunction of all flags (except 0 and everythingValue) var intermediateMask = 0; // Mask used to compute new mask value for each options // Selected options s_SelectedOptionsSet.Clear(); for (var flagIndex = flagStartIndex; flagIndex < flagEndIndex; flagIndex++) { var flagValue = flagValues[flagIndex]; flagMask |= flagValue; if ((mask & flagValue) == flagValue) { var optionIndex = flagIndex - flagStartIndex + 2; s_SelectedOptionsSet.Add(optionIndex); intermediateMask |= flagValue; } } // Button text buttonText = null; buttonMixedValuesText = null; for (var flagIndex = flagStartIndex; flagIndex < flagEndIndex; flagIndex++) { // Check if a specific value is set. if (mask == flagValues[flagIndex]) { buttonText = flagNames[flagIndex]; } } if (buttonText == null) { if (flagMask == intermediateMask) { // If all of the available flags are set then show the Everything name. s_SelectedOptionsSet.Add(1); buttonText = everythingName; } else if (mask == 0 || s_SelectedOptionsSet.Count == 0) { // If the mask is 0 or none of the actual flags are set we use the nothing name. s_SelectedOptionsSet.Add(0); buttonText = nothingName; } else { buttonText = "Mixed..."; // Extract mixed labels var sb = GenericPool <StringBuilder> .Get(); var iterator = s_SelectedOptionsSet.GetEnumerator(); iterator.MoveNext(); sb.Append(flagNames[iterator.Current + flagStartIndex - 2]); while (iterator.MoveNext()) { sb.Append(", "); sb.Append(flagNames[iterator.Current + flagStartIndex - 2]); } buttonMixedValuesText = sb.ToString(); sb.Clear(); GenericPool <StringBuilder> .Release(sb); } } selectedOptions = GetBuffer(s_SelectedOptions, s_SelectedOptionsSet.Count); var x = 0; foreach (var selected in s_SelectedOptionsSet) { selectedOptions[x] = selected; ++x; } // Option mask values optionMaskValues = GetBuffer(s_OptionValues, optionCount); optionMaskValues[0] = 0; optionMaskValues[1] = everythingValue; if (EditorGUI.showMixedValue) { intermediateMask = 0; } for (var flagIndex = flagStartIndex; flagIndex < flagEndIndex; flagIndex++) { var optionIndex = flagIndex - flagStartIndex + 2; var flagValue = flagValues[flagIndex]; var flagSet = ((intermediateMask & flagValue) == flagValue); var newMask = (flagSet ? intermediateMask & ~flagValue : intermediateMask | flagValue); // If all flag options are selected the mask becomes everythingValue to be consistent with the "Everything" option if (newMask == flagMask) { newMask = everythingValue; } optionMaskValues[optionIndex] = newMask; } }
internal static void GetMaskButtonValue(int mask, string[] flagNames, int[] flagValues, out string buttonText, out string buttonMixedValuesText) { const int everythingValue = ~0; bool hasNothingName = flagValues[0] == 0; bool hasEverythingName = flagValues[flagValues.Length - 1] == everythingValue; var nothingName = (hasNothingName ? flagNames[0] : "Nothing"); var everythingName = (hasEverythingName ? flagNames[flagValues.Length - 1] : "Everything"); var flagCount = flagNames.Length - (hasNothingName ? 1 : 0) - (hasEverythingName ? 1 : 0); var flagStartIndex = (hasNothingName ? 1 : 0); var flagEndIndex = flagStartIndex + flagCount; var flagMask = 0; // Disjunction of all flags (except 0 and everythingValue) var intermediateMask = 0; // Mask used to compute new mask value for each options var usedFlags = ListPool <int> .Get(); buttonText = null; buttonMixedValuesText = null; for (var flagIndex = flagStartIndex; flagIndex < flagEndIndex; flagIndex++) { var flagValue = flagValues[flagIndex]; flagMask |= flagValue; if (mask == flagValues[flagIndex]) { buttonText = flagNames[flagIndex]; } if ((mask & flagValue) == flagValue) { intermediateMask |= flagValue; usedFlags.Add(flagIndex); } } if (buttonText == null) { if (flagMask == intermediateMask) { // If all of the available flags are set then show the Everything name. buttonText = everythingName; } else if (intermediateMask == 0) { // If the mask is 0 or none of the actual flags are set we use the nothing name. buttonText = nothingName; } else { buttonText = "Mixed..."; // Extract mixed labels var sb = GenericPool <StringBuilder> .Get(); sb.Append(flagNames[usedFlags[0]]); for (int i = 1; i < usedFlags.Count; ++i) { sb.Append(", "); sb.Append(flagNames[usedFlags[i]]); } buttonMixedValuesText = sb.ToString(); sb.Clear(); GenericPool <StringBuilder> .Release(sb); } } ListPool <int> .Release(usedFlags); }
protected override void Destroy() { base.Destroy(); GenericPool <GetLocalizedStringOperation> .Release(this); }
protected override void Destroy() { GenericPool <LoadTableOperation <TTable, TEntry> > .Release(this); }
override public void Release() { GenericPool <XRPassUniversal> .Release(this); }