void IModule.UnloadModule()
        {
            EditorApplication.update        -= Update;
            EditorSceneManager.sceneSaved   -= OnSceneSaved;
            entityComponentsAdded           -= OnEntityComponentsChanged;
            entityComponentsRemoved         -= OnEntityComponentsChanged;
            functionalitySubscribersAdded   -= OnFunctionalitySubscribersChanged;
            functionalitySubscribersRemoved -= OnFunctionalitySubscribersChanged;

            m_PollingTask           = null;
            m_BrokenComponentCount  = 0;
            currentSceneIsFaceScene = false;
            m_CurrentEntities.Clear();
            m_CurrentEntityComponents.Clear();
            m_CurrentFunctionalitySubscribers.Clear();
            m_CurrentSubscriberComponents.Clear();
        }
        void IModule.LoadModule()
        {
            if (EditorApplication.isPlayingOrWillChangePlaymode)
            {
                return;
            }

            GetCurrentComponents();
            m_PollingTask = new EditorSlowTask(ScenePoll, m_PollingInterval);

            EditorApplication.update        += Update;
            EditorSceneManager.sceneSaved   += OnSceneSaved;
            entityComponentsAdded           += OnEntityComponentsChanged;
            entityComponentsRemoved         += OnEntityComponentsChanged;
            functionalitySubscribersAdded   += OnFunctionalitySubscribersChanged;
            functionalitySubscribersRemoved += OnFunctionalitySubscribersChanged;

            FindBrokenComponents();

            ScenePoll(); // Calling this here makes sure we immediately have updated scene information as soon as we switch scenes
            CheckIfFaceScene();
        }