Interface IMixedRealitySceneSystem
Interface for managing scenes in Unity. Scenes are divided into three categories: Manager, Lighting and Content.
The Manager scene is loaded first and remains loaded for the duration of the app. Only one Manager scene is ever loaded, and no scene operation will ever unload it.
The Lighting scene is a largely empty scene which controls lighting settings. Ambient lighting, skybox, sun direction, etc. A default lighting scene is loaded on initialization. After that the active lighting scene may be changed at any time via SetLightingScene. Only one lighting scene can ever be loaded at a time.
Content scenes are everything else. These can be loaded and unloaded at will in any combination.
The scene actions provided improve on unity's SceneManagement events by ensuring that scenes are considered valid before the action is invoked.
Inherited Members
Namespace: Microsoft.MixedReality.Toolkit.SceneSystem
Assembly: cs.temp.dll.dll
Syntax
public interface IMixedRealitySceneSystem : IMixedRealityEventSystem, IMixedRealityService, IDisposable, IMixedRealityEventSource, IEqualityComparer
Properties
ActiveLightingScene
Name of the currently loaded lighting scene. If a transition is in progress, this reports the target lighting scene we're transitioning to.
Declaration
string ActiveLightingScene { get; }
Property Value
Type | Description |
---|---|
String |
ContentSceneNames
An array of content scenes available to load / unload. Order in array matches build order. Useful if you want to present an ordered list of options, or if you want to track which scenes are loaded via IsContentLoaded.
Declaration
string[] ContentSceneNames { get; }
Property Value
Type | Description |
---|---|
String[] |
LightingOperationInProgress
True if the scene system is transitioning from one lighting scene to another. Lighting operations will not impede other operations.
Declaration
bool LightingOperationInProgress { get; }
Property Value
Type | Description |
---|---|
Boolean |
LightingOperationProgress
Progress of current lighting operation, from 0-1
Declaration
float LightingOperationProgress { get; }
Property Value
Type | Description |
---|---|
Single |
NextContentExists
Returns true if a content scene appears in build settings AFTER the latest loaded build index. Use to verify that LoadNextContent can be performed without wrapping.
Declaration
bool NextContentExists { get; }
Property Value
Type | Description |
---|---|
Boolean |
OnContentLoaded
Called when a set of content scenes have been loaded, activated and are valid. Includes names of all scenes loaded.
Declaration
Action<IEnumerable<string>> OnContentLoaded { get; set; }
Property Value
Type | Description |
---|---|
Action<IEnumerable<String>> |
OnContentUnloaded
Called after a set of content scenes have been completely unloaded. Includes names of all scenes about to be unloaded.
Declaration
Action<IEnumerable<string>> OnContentUnloaded { get; set; }
Property Value
Type | Description |
---|---|
Action<IEnumerable<String>> |
OnLightingLoaded
Called when a lighting scene has been loaded, activated and is valid. Includes scene name.
Declaration
Action<string> OnLightingLoaded { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnLightingUnloaded
Called after a lighting scene has been completely unloaded. Includes scene name.
Declaration
Action<string> OnLightingUnloaded { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnSceneLoaded
Called when scene has been loaded, activated and is valid. Called for all scene types (content, lighting and manager) Includes scene name
Declaration
Action<string> OnSceneLoaded { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnSceneUnloaded
Called when scene has been unloaded Called for all scene types (content, lighting and manager) Includes scene name
Declaration
Action<string> OnSceneUnloaded { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnWillLoadContent
Called just before a set of content scenes is loaded. Includes names of all scenes about to be loaded.
Declaration
Action<IEnumerable<string>> OnWillLoadContent { get; set; }
Property Value
Type | Description |
---|---|
Action<IEnumerable<String>> |
OnWillLoadLighting
Called just before a lighting scene is loaded. Includes name of scene.
Declaration
Action<string> OnWillLoadLighting { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnWillLoadScene
Called just before a scene is loaded. Called for all scene types (content, lighting and manager) Includes scene name
Declaration
Action<string> OnWillLoadScene { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnWillUnloadContent
Called just before a set of content scenes will be unloaded. Includes names of all scenes about to be unloaded.
Declaration
Action<IEnumerable<string>> OnWillUnloadContent { get; set; }
Property Value
Type | Description |
---|---|
Action<IEnumerable<String>> |
OnWillUnloadLighting
Called just before a lighting scene unload operation begins. Includes scene name.
Declaration
Action<string> OnWillUnloadLighting { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
OnWillUnloadScene
Called just before a scene will be unloaded Called for all scene types (content, lighting and manager) Includes scene name
Declaration
Action<string> OnWillUnloadScene { get; set; }
Property Value
Type | Description |
---|---|
Action<String> |
PrevContentExists
Returns true if a content scene appears in build settings PRIOR to the latest loaded build index. Use to verify that LoadPrevContent can be performed without wrapping.
Declaration
bool PrevContentExists { get; }
Property Value
Type | Description |
---|---|
Boolean |
SceneOperationInProgress
True if the scene system is loading or unloading content scenes. Manager and lighting scenes are ignored.
Declaration
bool SceneOperationInProgress { get; }
Property Value
Type | Description |
---|---|
Boolean |
SceneOperationProgress
Progress of the current scene operation, from 0-1. A scene operation may include multiple concurrently loaded scenes.
Declaration
float SceneOperationProgress { get; }
Property Value
Type | Description |
---|---|
Single |
WaitingToProceed
True when content has been loaded with an activation token and AllowSceneActivation has not been set to true. Useful for existing entities that shouldn't act until a newly loaded scene is actually activated.
Declaration
bool WaitingToProceed { get; }
Property Value
Type | Description |
---|---|
Boolean |
Methods
GetScene(String)
Returns a scene by name. Useful for processing events.
Declaration
Scene GetScene(string sceneName)
Parameters
Type | Name | Description |
---|---|---|
String | sceneName |
Returns
Type | Description |
---|---|
Scene |
GetScenes(IEnumerable<String>)
Returns a set of scenes by name. Useful for processing events.
Declaration
IEnumerable<Scene> GetScenes(IEnumerable<string> sceneNames)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<String> | sceneNames |
Returns
Type | Description |
---|---|
IEnumerable<Scene> |
IsContentLoaded(String)
Returns true if a content scene is fully loaded.
Declaration
bool IsContentLoaded(string sceneName)
Parameters
Type | Name | Description |
---|---|---|
String | sceneName |
Returns
Type | Description |
---|---|
Boolean |
LoadContent(IEnumerable<String>, LoadSceneMode, SceneActivationToken)
Async method to load the scenes by name. If a scene operation is in progress, no action will be taken.
Declaration
Task LoadContent(IEnumerable<string> scenesToLoad, LoadSceneMode mode = null, SceneActivationToken activationToken = null)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<String> | scenesToLoad | Names of content scenes to load. Invalid scenes will be ignored. |
LoadSceneMode | mode | Additive mode will load the content additively. Single mode will first unload all loaded content scenes first. |
SceneActivationToken | activationToken | Optional token for manual scene activation. Useful for loading screens and multiplayer. If not null, operation will wait until activationToken's AllowSceneActivation value is true before activating scene objects. |
Returns
Type | Description |
---|---|
Task | Task |
LoadContent(String, LoadSceneMode, SceneActivationToken)
Async method to load a single scene by name. If a scene operation is in progress, no action will be taken.
Declaration
Task LoadContent(string sceneToLoad, LoadSceneMode mode = null, SceneActivationToken activationToken = null)
Parameters
Type | Name | Description |
---|---|---|
String | sceneToLoad | Name of content scene to load. Invalid scenes will be ignored. |
LoadSceneMode | mode | Additive mode will load the content additively. Single mode will first unload all loaded content scenes first. |
SceneActivationToken | activationToken | Optional token for manual scene activation. Useful for loading screens and multiplayer. If not null, operation will wait until activationToken's AllowSceneActivation value is true before activating scene objects. |
Returns
Type | Description |
---|---|
Task | Task |
LoadContentByTag(String, LoadSceneMode, SceneActivationToken)
Async method to load content scenes by tag. All scenes with the supplied tag will be loaded. If no scenes with this tag are found, no action will be taken. If a scene operation is in progress, no action will be taken.
Declaration
Task LoadContentByTag(string tag, LoadSceneMode mode = null, SceneActivationToken activationToken = null)
Parameters
Type | Name | Description |
---|---|---|
String | tag | Scene tag. |
LoadSceneMode | mode | Additive mode will load the content additively. Single mode will first unload all loaded content scenes first. |
SceneActivationToken | activationToken | Optional token for manual scene activation. Useful for loading screens and multiplayer. If not null, operation will wait until activationToken's AllowSceneActivation value is true before activating scene objects. |
Returns
Type | Description |
---|---|
Task | Task |
LoadNextContent(Boolean, LoadSceneMode, SceneActivationToken)
Loads the next content scene according to build index. Uses the last-loaded content scene as previous build index. If no next content exists, and wrap is false, no action is taken. Use NextContentExists to verify that this operation is possible (if not using wrap).
Declaration
Task LoadNextContent(bool wrap = false, LoadSceneMode mode = null, SceneActivationToken activationToken = null)
Parameters
Type | Name | Description |
---|---|---|
Boolean | wrap | If true, if the current scene is the LAST content scene, the FIRST content scene will be loaded. |
LoadSceneMode | mode | Additive mode will load the content additively. Single mode will first unload all loaded content scenes first. |
SceneActivationToken | activationToken | Optional token for manual scene activation. Useful for loading screens and multiplayer. If not null, operation will wait until activationToken's AllowSceneActivation value is true before activating scene objects. |
Returns
Type | Description |
---|---|
Task | Task |
LoadPrevContent(Boolean, LoadSceneMode, SceneActivationToken)
Loads the previous content scene according to build index. Uses the loaded content scene with the smallest build index as previous build index. If no previous content exists, and wrap is false, no action is taken. Use PrevContentExists to verify that this operation is possible (if not using wrap).
Declaration
Task LoadPrevContent(bool wrap = false, LoadSceneMode mode = null, SceneActivationToken activationToken = null)
Parameters
Type | Name | Description |
---|---|---|
Boolean | wrap | If true, if the current scene is the FIRST content scene, the LAST content scene will be loaded. |
LoadSceneMode | mode | Additive mode will load the content additively. Single mode will first unload all loaded content scenes first. |
SceneActivationToken | activationToken | Optional token for manual scene activation. Useful for loading screens and multiplayer. If not null, operation will wait until activationToken's AllowSceneActivation value is true before activating scene objects. |
Returns
Type | Description |
---|---|
Task | Task |
SetLightingScene(String, LightingSceneTransitionType, Single)
Sets the current lighting scene. The lighting scene determines ambient light and skybox settings. It can optionally contain light objects. If the lighting scene is already loaded, no action will be taken. If a lighting scene transition is in progress, request will be queued and executed when the transition is complete.
Declaration
void SetLightingScene(string newLightingSceneName, LightingSceneTransitionType transitionType = LightingSceneTransitionType.None, float transitionDuration = 1F)
Parameters
Type | Name | Description |
---|---|---|
String | newLightingSceneName | |
LightingSceneTransitionType | transitionType | The transition type to use. See LightingSceneTransitionType for information about each transition type. |
Single | transitionDuration | The duration of the transition (if not None). |
UnloadContent(IEnumerable<String>)
Async method to unload scenes by name. If a scene is not loaded, it will be ignored. If a scene operation is in progress, no action will be taken.
Declaration
Task UnloadContent(IEnumerable<string> scenesToUnload)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<String> | scenesToUnload |
Returns
Type | Description |
---|---|
Task | Task |
UnloadContent(String)
Async method to unload a single scene by name. If the scene is not loaded, no action will be taken. If a scene operation is in progress, no action will be taken.
Declaration
Task UnloadContent(string sceneToUnload)
Parameters
Type | Name | Description |
---|---|---|
String | sceneToUnload |
Returns
Type | Description |
---|---|
Task | Task |
UnloadContentByTag(String)
Async method to unload scenes by name. If a scene is not loaded, it will be ignored. If a scene operation is in progress, no action will be taken.
Declaration
Task UnloadContentByTag(string tag)
Parameters
Type | Name | Description |
---|---|---|
String | tag | Scene tag |
Returns
Type | Description |
---|---|
Task | Task |