private void AdvanceStateMachine()

in Assets/scripts/OnboardingManager.cs [44:155]


    private void AdvanceStateMachine()
    {
        switch (OnboardingStage)
        {
            case Stage.Intro:
                switch (_platformId)
                {
                    case GalaxyExplorerManager.PlatformId.HoloLensGen1:
                        VoManager.PlayClip(Intro_0301_hl1);
                        break;
                    
                    case GalaxyExplorerManager.PlatformId.ArticulatedHandsPlatform:
                        VoManager.PlayClip(Intro_0301_hl2);
                        ForceDirector.gameObject.SetActive(true);
                        ForceDirector.Play();
                        break;
                    
                    case GalaxyExplorerManager.PlatformId.ImmersiveHMD:
                        VoManager.PlayClip(Intro_03_vr);
                        break;
                    case GalaxyExplorerManager.PlatformId.Desktop:
                        break;
                    case GalaxyExplorerManager.PlatformId.Phone:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
                OnboardingStage = Stage.AfterDedicatedIntro;
                EvaluateOnEndOfVoiceOver();
                break;

            case Stage.AfterDedicatedIntro:
                switch (_platformId)
                {
                    case GalaxyExplorerManager.PlatformId.HoloLensGen1:
                    case GalaxyExplorerManager.PlatformId.ImmersiveHMD:
                    case GalaxyExplorerManager.PlatformId.ArticulatedHandsPlatform:
                        EnableForcePull();
                        break;
                    
                    case GalaxyExplorerManager.PlatformId.Desktop:
                        break;
                    case GalaxyExplorerManager.PlatformId.Phone:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
                OnboardingStage = Stage.AfterForcePull;
                break;
            
            case Stage.AfterForcePull:
                switch (_platformId)
                {
                    case GalaxyExplorerManager.PlatformId.HoloLensGen1:
                        VoManager.PlayClip(Intro_0302_hl1, 0f, false, true);
                        break;
                    
                    case GalaxyExplorerManager.PlatformId.ArticulatedHandsPlatform:
                        VoManager.PlayClip(Intro_0302_hl2, 0f, false, true);
                        ForceDirector.Stop();
                        ForceDirector.gameObject.SetActive(false);
                        PlacementDirector.gameObject.SetActive(true);
                        PlacementDirector.Play();
                        break;
                    
                    case GalaxyExplorerManager.PlatformId.ImmersiveHMD:
                        break;
                    case GalaxyExplorerManager.PlatformId.Desktop:
                        break;
                    case GalaxyExplorerManager.PlatformId.Phone:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
                // always chain intro 4
                VoManager.PlayClip(Intro_04);
                OnboardingStage = Stage.AfterConfirmation;
                break;
            
            case Stage.AfterConfirmation:
                DisableForcePull();
                switch (_platformId)
                {
                    case GalaxyExplorerManager.PlatformId.HoloLensGen1:
                        break;
                    case GalaxyExplorerManager.PlatformId.ArticulatedHandsPlatform:
                        PlacementDirector.Stop();
                        PlacementDirector.gameObject.SetActive(false);
                        break;
                    case GalaxyExplorerManager.PlatformId.ImmersiveHMD:
                        break;
                    case GalaxyExplorerManager.PlatformId.Desktop:
                        break;
                    case GalaxyExplorerManager.PlatformId.Phone:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
                OnboardingStage = Stage.Done;
                break;
            
            case Stage.None:
                break;
            
            case Stage.Done:
                return;
            
            default:
                throw new ArgumentOutOfRangeException();
        }
        
    }