Пример #1
0
        /// <summary>
        /// Apply property modifications.
        /// </summary>
        public void ApplyModifiedProperties()
        {
            if (m_Target != null && m_PropertiesChanged.Count > 0)
            {
                var ownerUnityObj    = m_Target.owner as UnityEngine.Object;
                var variableModified = new List <Variable>();

                // Register undo
                #if UNITY_4_0_0 || UNITY_4_1 || UNITY_4_2
                Undo.RegisterUndo(ownerUnityObj, "Inspector");
                #else
                Undo.RecordObject(ownerUnityObj, "Inspector");
                #endif

                // Call ApplyModifiedValue in all change properties
                for (int i = 0; i < m_PropertiesChanged.Count; i++)
                {
                    // Apply changes in the property data
                    m_PropertiesChanged[i].ApplyModifiedValue();

                    // Recreate data?
                    m_RecreateData = m_RecreateData || m_PropertiesChanged[i].hasChildren || m_PropertiesChanged[i].propertyType == NodePropertyType.Variable;

                    // It is a variable?
                    var variable = m_PropertiesChanged[i].target as Variable;
                    if (variable != null && !variableModified.Contains(variable))
                    {
                        variableModified.Add(variable);
                    }
                }

                // Clear changed properties
                m_PropertiesChanged.Clear();

                // Call OnValidate
                foreach (var variable in variableModified)
                {
                    variable.OnValidate();
                }
                m_Target.OnValidate();

                // Set tree dirty flag
                StateUtility.SetDirty(m_Target.owner);
            }
        }
Пример #2
0
        /// <summary>
        /// Reset the supplied node properties.
        /// <param name="node">The node to be reseted.</param>
        /// </summary>
        public static void ResetNode(ActionNode node)
        {
            // Get the owner as an Uniyt object
            var ownerUnityObj = node != null ? node.owner as UnityEngine.Object : null;

            // Validate parameters
            if (ownerUnityObj != null)
            {
                // Register Undo
                #if UNITY_4_0_0 || UNITY_4_1 || UNITY_4_2
                Undo.RegisterUndo(ownerUnityObj, "Reset Node");
                #else
                Undo.RecordObject(ownerUnityObj, "Reset Node");
                #endif

                node.name = node.GetType().Name;
                node.Reset();
                node.OnValidate();
                StateUtility.SetDirty(node.owner);
            }
        }