private void OnComponentDestroyed(SpriteGizmo gizmo)
 {
     gizmo.ComponentDestroyed -= OnComponentDestroyed;
     Destroy(gizmo);
     m_meshesCache.Remove(gizmo.Mesh, gizmo.transform);
     m_meshesCache.Refresh();
 }
        private void OnIsOpenedChanged()
        {
            if (m_editor.IsOpened)
            {
                IEnumerable <ExposeToEditor> objects = m_editor.Object.Get(false);

                for (int i = 0; i < m_types.Length; ++i)
                {
                    IEnumerable <ExposeToEditor> objectsOfType = objects.Where(o => o.GetComponent(m_types[i]) != null);
                    foreach (ExposeToEditor obj in objectsOfType)
                    {
                        GreateGizmo(obj.gameObject, m_types[i]);
                    }
                }

                m_meshesCache.Refresh();
                Subscribe();
            }
            else
            {
                UnsubscribeAndDestroy();
            }
        }