/// <inheritdoc/>
        void IModule.LoadModule()
        {
            if (!m_SceneModule.simulateInPlaymode && Application.isPlaying)
            {
                return;
            }

            // TODO: Move environment manager functionality to runtime assembly
            EditorOnlyDelegates.OpenSimulationScene     = OpenSimulation;
            EditorOnlyDelegates.GetSimulatedContentRoot = () => ContentRoot;
            instance = this;

            if (!SimulationSceneUsers.instance)
            {
                m_SimulationSceneUsers = SimulationSceneUsers.CreateSimulationSceneSubscribers();
            }
            else
            {
                m_SimulationSceneUsers = SimulationSceneUsers.instance;
            }

            if (m_SceneModule.simulateInPlaymode && EditorApplication.isPlayingOrWillChangePlaymode)
            {
                m_SimulationSceneUsers.AddSimulationUser(MARSSceneModule.instance);
                m_SceneModuleIsUser = true;
            }

            if (!Application.isPlaying)
            {
                OpenSimulation();
            }

            AssemblyReloadEvents.afterAssemblyReload  += OnAfterAssemblyReload;
            AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload;
        }
        void OnAfterAssemblyReload()
        {
            isAssemblyReloading = false;
            if (EditorApplication.isPlayingOrWillChangePlaymode)
            {
                return;
            }

            if (!SimulationSceneUsers.instance)
            {
                m_SimulationSceneUsers = SimulationSceneUsers.CreateSimulationSceneSubscribers();
            }
            else
            {
                m_SimulationSceneUsers = SimulationSceneUsers.instance;
            }

            OpenSimulation();
        }