public override void OnModuleDeactivate()
 {
     undoSystem.UnregisterUndoCallback(UndoRedoPerformed);
     CleanupShapeEditors();
     m_Selected = null;
     spriteEditorWindow.enableMouseMoveEvent = false;
     if (m_Outline != null)
     {
         undoSystem.ClearUndo(m_Outline);
         ScriptableObject.DestroyImmediate(m_Outline);
         m_Outline = null;
     }
 }
        protected virtual void LoadOutline()
        {
            m_Outline           = ScriptableObject.CreateInstance <SpriteOutlineModel>();
            m_Outline.hideFlags = HideFlags.HideAndDontSave;
            var spriteDataProvider  = spriteEditorWindow.GetDataProvider <ISpriteEditorDataProvider>();
            var outlineDataProvider = spriteEditorWindow.GetDataProvider <ISpriteOutlineDataProvider>();

            foreach (var rect in spriteDataProvider.GetSpriteRects())
            {
                var outlines = outlineDataProvider.GetOutlines(rect.spriteID);
                m_Outline.AddListVector2(rect.spriteID, outlines);
                m_Outline[m_Outline.Count - 1].tessellationDetail = outlineDataProvider.GetTessellationDetail(rect.spriteID);
            }
        }
        public override bool ApplyRevert(bool apply)
        {
            if (m_Outline != null)
            {
                if (apply)
                {
                    var outlineDataProvider = spriteEditorWindow.GetDataProvider <ISpriteOutlineDataProvider>();
                    for (int i = 0; i < m_Outline.Count; ++i)
                    {
                        outlineDataProvider.SetOutlines(m_Outline[i].spriteID, m_Outline[i].ToListVector());
                        outlineDataProvider.SetTessellationDetail(m_Outline[i].spriteID, m_Outline[i].tessellationDetail);
                    }
                }

                ScriptableObject.DestroyImmediate(m_Outline);
                m_Outline = null;
            }

            return(true);
        }