public virtual void OnAttributeValueChanged(BaseNodeAttr attr = null) { // 所有变量一起改变 if (attr == null) { CachePreValue(); } else { List <object> preValues = new List <object>(); List <object> curValues = new List <object>(); for (int i = 0; i < _attrs.Count; i++) { preValues.Add(_preValues[i]); curValues.Add(GetAttrByIndex(i).GetValueString()); } OpNodeAttrValuesModificationHM hm = new OpNodeAttrValuesModificationHM { nodeIndex = NodeManager.GetNodeIndex(this), preValues = preValues, curValues = curValues, }; Undo.AddToUndoTask(hm); CachePreValue(); } UpdateDesc(); }
protected override HistoryMemento OnUndo() { BaseNode curNode = NodeManager.FindNodeByIndex(nodeIndex); curNode.SetAttrsValues(preValues); var hm = new OpNodeAttrValuesModificationHM { nodeIndex = nodeIndex, preValues = curValues, curValues = preValues, }; return(hm); }