private IEnumerator AppendCore(IObserver <SceneInstance> observer, Scenes?identifier, bool activeOnLoad) { if (!identifier.HasValue) { yield break; } SceneInstance sceneInstance = null; var diagnostics = new TimeDiagnostics(); diagnostics.Begin(TimeDiagnostics.Measure.Append); var loadYield = LoadScene(identifier.Value, LoadSceneMode.Additive).ToYieldInstruction(false); while (!loadYield.IsDone) { yield return(null); } if (loadYield.HasError) { OnLoadError(loadYield.Error, identifier); } if (loadYield.HasResult) { sceneInstance = loadYield.Result; appendSceneInstances.Add(sceneInstance); diagnostics.Finish(TimeDiagnostics.Measure.Append); var additiveTime = diagnostics.GetTime(TimeDiagnostics.Measure.Append); var message = string.Format("{0} ({1:F2}ms)(Additive)", identifier.Value, additiveTime); UnityConsole.Event(ConsoleEventName, ConsoleEventColor, message); if (activeOnLoad) { sceneInstance.Enable(); } } observer.OnNext(sceneInstance); observer.OnCompleted(); }
private IEnumerator AppendCore(IObserver <SceneInstance> observer, Scenes?identifier, bool activeOnLoad) { if (!identifier.HasValue) { yield break; } SceneInstance sceneInstance = null; var diagnostics = new TimeDiagnostics(); diagnostics.Begin(TimeDiagnostics.Measure.Append); var loadYield = LoadScene(identifier.Value, LoadSceneMode.Additive).ToYieldInstruction(); yield return(loadYield); if (loadYield.HasResult) { sceneInstance = loadYield.Result; diagnostics.Finish(TimeDiagnostics.Measure.Append); var additiveTime = diagnostics.GetTime(TimeDiagnostics.Measure.Append); UnityConsole.Event(ConsoleEventName, ConsoleEventColor, "{0} ({1}ms)(Additive)", identifier.Value, additiveTime); } if (activeOnLoad) { sceneInstance.Enable(); } observer.OnNext(sceneInstance); observer.OnCompleted(); }