/// <summary>
    /// When we change playmode, we make sure to reset all iml models
    /// </summary>
    /// <param name="playModeStatus"></param>
    private static void PlayModeStateChangedLogic(PlayModeStateChange playModeStatus)
    {
        #region Enter Events

        // We load models if we are entering a playmode (not required when leaving playmode)
        if (playModeStatus == PlayModeStateChange.EnteredPlayMode)
        {
            // Reload all models (if we can) when we enter playmode or when we come back to the editor
            foreach (var MLComponent in m_IMLComponents)
            {
                MLComponent.LoadDataAndRunOnAwakeModels();

                //// Reload models
                //MLComponent.LoadAllModelsFromDisk(reCreateModels: true);
                //// Run them (if marked with RunOnAwake)
                //MLComponent.RunAllModels();
            }
            //Debug.Log("**Models reconfigured in editor status: " + playModeStatus + "**");
        }

        if (playModeStatus == PlayModeStateChange.EnteredEditMode)
        {
            foreach (var MLComponent in m_IMLComponents)
            {
                MLComponent.updateGameObjectImage();
                MLComponent.GetAllNodes();
                MLComponent.UpdateGameObjectNodes(changingPlayMode: true);
                MLComponent.UpdateScriptNodes(changingPlayMode: true);
            }
        }

        #endregion

        #region Exit Events

        // Remove any scriptNodes added during playtime when leaving playMode
        if (playModeStatus == PlayModeStateChange.ExitingPlayMode)
        {
            foreach (var MLComponent in m_IMLComponents)
            {
                MLComponent.UpdateGameObjectNodes(changingPlayMode: true);
                MLComponent.UpdateScriptNodes(changingPlayMode: true);
            }
        }

        // We stop models if we are leaving a playmode or editormode
        if (playModeStatus == PlayModeStateChange.ExitingEditMode || playModeStatus == PlayModeStateChange.ExitingPlayMode)
        {
            foreach (var MLComponent in m_IMLComponents)
            {
                MLComponent.StopAllModels();
            }
        }

        #endregion
    }
    /// <summary>
    /// When the scene opens we will clear and find all the imlComponents
    /// </summary>
    /// <param name="scene"></param>
    /// <param name="mode"></param>
    private static void SceneOpenedLogic(UnityEngine.SceneManagement.Scene scene, UnityEditor.SceneManagement.OpenSceneMode mode)
    {
        //Debug.Log("SceneOpened");
        ClearIMLComponents();
        FindIMLComponents();
        // Reload all models (if we can) when we enter playmode or when we come back to the editor
        foreach (var MLComponent in m_IMLComponents)
        {
            // Get all nodes
            MLComponent.GetAllNodes();

            MLComponent.LoadDataAndRunOnAwakeModels();
            //// Reload models
            //MLComponent.LoadAllModelsFromDisk(reCreateModels: true);
            //// Run them (if marked with RunOnAwake)
            //MLComponent.RunAllModels();
        }
    }