public void Update() { if (!m_Undo || null == m_Undo) { return; } RefreshAll(); m_FrameChanges.Clear(); m_Caretaker.Update(); // Handle deleted objects foreach (var unregistered in m_Registry.AllUnregistered()) { m_FrameChanges.Add(new Change { Id = unregistered.Id, Version = m_Undo.Version, RegistryObject = unregistered, NextVersion = null, PreviousVersion = GetPreviousValue(unregistered) }); } m_Registry.ClearUnregisteredObjects(); if (m_FrameChanges.Count > 0) { if (TryMergeChanges()) { return; } //Debug.Log("UndoRedoable operation registered"); // We didn't / couldn't merge the changes, push a new changeset. m_UndoableChanges.Add(new HashSet <Change>(m_FrameChanges, new ChangeComparer())); m_Undo.IncrementVersion(); m_RedoableChanges.Clear(); ++m_CurrentIndex; } }