in Assets/MRTK/Core/Inspectors/ServiceInspectors/SceneSystemInspector.cs [146:282]
private void RenderContentScenes(IMixedRealitySceneSystem sceneSystem, IMixedRealitySceneSystemEditor sceneSystemEditor, List<SceneInfo> contentScenes)
{
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.LabelField("Load / Unload by tag", EditorStyles.miniBoldLabel);
List<string> contentTags = new List<string>(sceneSystemEditor.ContentTags);
if (contentTags.Count == 0)
{
EditorGUILayout.LabelField("(No scenes with content tags found)", EditorStyles.miniLabel);
}
else
{
foreach (string tag in contentTags)
{
using (new EditorGUILayout.VerticalScope(GUILayout.MaxWidth(tagLoadButtonSetWidth)))
{
EditorGUILayout.LabelField(tag, EditorStyles.miniLabel);
using (new EditorGUILayout.HorizontalScope())
{
if (GUILayout.Button("Load", EditorStyles.miniButton, GUILayout.MaxWidth(maxLoadButtonWidth)))
{
if (Application.isPlaying)
{
ServiceContentLoadByTag(sceneSystem, tag);
}
else
{
foreach (SceneInfo contentScene in sceneSystemEditor.ContentScenes)
{
if (contentScene.Tag == tag)
{
EditorSceneManager.OpenScene(contentScene.Path, OpenSceneMode.Additive);
}
}
}
}
if (GUILayout.Button("Unload", EditorStyles.miniButton, GUILayout.MaxWidth(maxLoadButtonWidth)))
{
if (Application.isPlaying)
{
ServiceContentUnloadByTag(sceneSystem, tag);
}
else
{
foreach (SceneInfo contentScene in sceneSystemEditor.ContentScenes)
{
if (contentScene.Tag == tag)
{
Scene scene = EditorSceneManager.GetSceneByName(contentScene.Name);
EditorSceneManager.CloseScene(scene, false);
}
}
}
}
}
}
}
}
EditorGUILayout.Space();
EditorGUILayout.LabelField("Load / Unload by build index order", EditorStyles.miniBoldLabel);
using (new EditorGUILayout.HorizontalScope())
{
EditorGUI.BeginDisabledGroup(!sceneSystem.PrevContentExists);
if (GUILayout.Button("Load Prev Content", EditorStyles.miniButton))
{
if (Application.isPlaying)
{
ServiceContentLoadPrev(sceneSystem);
}
else
{
sceneSystemEditor.EditorLoadPrevContent();
}
}
EditorGUI.EndDisabledGroup();
EditorGUI.BeginDisabledGroup(!sceneSystem.NextContentExists);
if (GUILayout.Button("Load Next Content", EditorStyles.miniButton))
{
if (Application.isPlaying)
{
ServiceContentLoadNext(sceneSystem);
}
else
{
sceneSystemEditor.EditorLoadNextContent();
}
}
EditorGUI.EndDisabledGroup();
}
EditorGUILayout.Space();
EditorGUILayout.LabelField("Load / Unload individually", EditorStyles.miniBoldLabel);
foreach (SceneInfo contentScene in sceneSystemEditor.ContentScenes)
{
if (contentScene.IsEmpty)
{
GUI.color = errorColor;
GUILayout.Button("(Scene Missing)", EditorStyles.toolbarButton);
continue;
}
Scene scene = EditorSceneManager.GetSceneByName(contentScene.Name);
bool loaded = scene.isLoaded;
GUI.color = loaded ? enabledColor : disabledColor;
if (GUILayout.Button(contentScene.Name, EditorStyles.toolbarButton))
{
if (Application.isPlaying)
{
if (loaded)
{
ServiceContentUnload(sceneSystem, contentScene.Name);
}
else
{
ServiceContentLoad(sceneSystem, contentScene.Name);
}
}
else
{
if (loaded)
{
EditorSceneManager.CloseScene(scene, false);
}
else
{
EditorSceneManager.OpenScene(contentScene.Path, OpenSceneMode.Additive);
}
}
}
}
}