public IEnumerator FirstPersonObserverRestartWhileActive()
        {
            base.InitializeAndStart();

            MockRuntime.ActivateSecondaryView(XrViewConfigurationType.SecondaryMonoFirstPersonObserver, true);
            yield return(new WaitForXrFrame(1));

            MockRuntime.GetEndFrameStats(out var primaryLayerCount, out var secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 1);

            // Transition to ready, which was causing a crash.
            MockRuntime.TransitionToState(XrSessionState.Visible, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Synchronized, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Stopping, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Idle, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Ready, false);
            yield return(null);

            // Check that secondary layer is still there
            MockRuntime.GetEndFrameStats(out primaryLayerCount, out secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 1);

            // Transition back to focused
            MockRuntime.TransitionToState(XrSessionState.Synchronized, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Visible, false);
            yield return(null);

            MockRuntime.TransitionToState(XrSessionState.Focused, false);
            yield return(null);

            yield return(new WaitForXrFrame(2));

            // Verify secondary layer is still up and running
            MockRuntime.GetEndFrameStats(out primaryLayerCount, out secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 1);

            // Make sure we can turn it off
            MockRuntime.ActivateSecondaryView(XrViewConfigurationType.SecondaryMonoFirstPersonObserver, false);
            yield return(new WaitForXrFrame(2));

            MockRuntime.GetEndFrameStats(out primaryLayerCount, out secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 0);
        }
        public IEnumerator FirstPersonObserver()
        {
            base.InitializeAndStart();

            MockRuntime.ActivateSecondaryView(XrViewConfigurationType.SecondaryMonoFirstPersonObserver, true);

            yield return(new WaitForXrFrame(2));

            MockRuntime.GetEndFrameStats(out var primaryLayerCount, out var secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 1);

            MockRuntime.ActivateSecondaryView(XrViewConfigurationType.SecondaryMonoFirstPersonObserver, false);

            yield return(new WaitForXrFrame(2));

            MockRuntime.GetEndFrameStats(out primaryLayerCount, out secondaryLayerCount);
            Assert.IsTrue(secondaryLayerCount == 0);
        }