private void UpdateAvailableOverrides() { Style style = (Style)m_Style.objectReferenceValue; if (style == null) { return; } m_AvailableOverrides.Clear(); List <string> usedAttributes = new List <string>(); for (int i = 0; i < m_Overrides.arraySize; i++) { OverridableAttribute attribute = (OverridableAttribute)m_Overrides.GetArrayElementAtIndex(i).objectReferenceValue; usedAttributes.Add(attribute.attributeName); } foreach (OverridableAttribute attribute in style) { if (!m_AvailableOverrides.Contains(attribute.attributeName) && !usedAttributes.Contains(attribute.attributeName)) { m_AvailableOverrides.Add(attribute.attributeName); } } }
private void OnItemAdded(object userData) { string attributeName = (string)userData; Style style = (Style)m_Style.objectReferenceValue; if (style.TryGetAttribute(attributeName, out OverridableAttribute attribute)) { OverridableAttribute copy = Instantiate(attribute); copy.hideFlags = HideFlags.HideInHierarchy; AssetDatabase.AddObjectToAsset(copy, serializedObject.targetObject); AssetDatabase.SaveAssets(); m_Overrides.InsertArrayElementAtIndex(m_Overrides.arraySize); SerializedProperty prop = m_Overrides.GetArrayElementAtIndex(m_Overrides.arraySize - 1); prop.objectReferenceValue = copy; serializedObject.ApplyModifiedProperties(); UpdateAvailableOverrides(); } }