Example #1
0
        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);
                }
            }
        }
Example #2
0
        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();
            }
        }