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