private void OpenActivityInEditor()
        {
            EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();

            //The Game scene must allways be loaded
            OpenSceneInEditor(R.E.Scene.Game, OpenSceneMode.Single);

            //Load Activity controller scene
            R.E.Scene scene = (R.E.Scene)GetEnumProperty("scene", typeof(R.E.Scene)).CurrentValue;
            if (scene != R.E.Scene.None)
            {
                OpenSceneInEditor(scene, OpenSceneMode.Additive);
            }

            //Load Activity fragments
            var fragments = GetListProperty("fragments");

            for (int i = 0; i < fragments.serializedProperty.arraySize; i++)
            {
                OpenFragmentInEditor(fragments.serializedProperty.GetArrayElementAtIndex(i).objectReferenceValue as Fragment,
                                     OpenSceneMode.Additive);
            }

            //Load Activity menus
            var menus = GetListProperty("menus");

            for (int i = 0; i < menus.serializedProperty.arraySize; i++)
            {
                OpenMenuInEditor(menus.serializedProperty.GetArrayElementAtIndex(i).objectReferenceValue as Menu,
                                 OpenSceneMode.Additive);
            }
        }
 private void OpenSceneInEditor(R.E.Scene scene, OpenSceneMode mode)
 {
     foreach (EditorBuildSettingsScene builtScene in EditorBuildSettings.scenes)
     {
         //The "/" in the front is to prevent some issues with similar scene names.
         //EX :
         //      NewHighScoreScene.unity and HighScoreScene.unity
         if (builtScene.path.EndsWith("/" + R.S.Scene.ToString(scene) + ".unity"))
         {
             EditorSceneManager.OpenScene(builtScene.path, mode);
             break;
         }
     }
 }