Tree("Root") { Composite(Sequence) { BTC.InitializeSpeechManager() BTC.SetSpeechRecognitionLanguage("it-IT") BTC.SetVoiceName("it-IT-IsabellaMultilingualNeural") Composite(Race) { Composite(Sequence) { // Error in Speech Service: Cancel BTC Trees BTC.SpeechErrorOccured() BTC.SetBool("error") } Composite(Sequence) { BTC.Run("MediaPlayer.VIDEOS.IntroFidle1") BTC.FadeIn("FadeScene.XRInteractionHandsSetup.Black") RunTree("10_SBB_Zugabteil_Intro") } } Composite(Sequence) { BTC.CompareBool("error") // Error Handling BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.Show("GO.HANDMENU.SpeechButton") BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Restart") BTC.Show("GO.HANDMENU.Option1Button") BTC.Run("NamedEventTrigger.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } } } Tree("10_SBB_Zugabteil_Intro") { // --- Zugabteil - Intro --- Composite(Selector) { Composite(Sequence) { BTC.NoStoriesVisited() BTC.Wait(8) BTC.Hide("MediaPlayer.VIDEOS.IntroFidle1") // --- Zugabteil - Exposition --- BTC.Run("MediaPlayer.VIDEOS.ExpositionF1") BTC.Run("MediaPlayer.VIDEOS.ExpositionFidle2") BTC.AddPossbileSpeechIntent("Zugabteil-Exposition-U-2") BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Sequence) { BTC.UserStartedSpeechInput() Composite(Selector) { // -- Selector 1: Intent erkannt Composite(Sequence) { BTC.SpeechIntentRecognized() BTC.ClearPossbileSpeechIntents() } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() } } BTC.Hide("MediaPlayer.VIDEOS.ExpositionFidle2") BTC.Run("MediaPlayer.VIDEOS.ExpositionF3") BTC.Run("MediaPlayer.VIDEOS.ExpositionFidle4") BTC.AddPossbileSpeechIntent("Zugabteil-Exposition-U-4a") BTC.AddPossbileSpeechIntent("Zugabteil-Exposition-U-4b") BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Sequence) { BTC.UserStartedSpeechInput() Composite(Selector) { // -- Selector 1: Intent erkannt Composite(Sequence) { BTC.SpeechIntentRecognized() // Intent erkannt Composite(Race) { Composite(Sequence) { BTC.CompareIntentID("Zugabteil-Exposition-U-4a") BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil-Exposition-U-4b") BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } } } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.ExpositionFidle4") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.ExpositionFidle4") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } RunTree("10_SBB_Zugabteil_Szenenwahl_Selection") } } Tree("10_SBB_Zugabteil_Szenenwahl_Selection") { // --- Zugabteil - Szenenwahl Selection --- Composite(Sequence) { BTC.SetBool("handmenu_active", false) Composite(Selector) { Composite(Sequence) { // Story A besucht BTC.StoryAVisited() Composite(Selector) { Composite(Sequence) { // Story A + B besucht BTC.StoryBVisited() Composite(Selector) { Composite(Sequence) { // Story A + B + C besucht BTC.StoryCVisited() // --- Zugabteil - Story Ende --- BTC.Show("Depthkit.VIDEOS.StoryEnde1Zugabtei") BTC.Run("Depthkit.VIDEOS.StoryEnde1Zugabtei") BTC.Hide("Depthkit.VIDEOS.StoryEnde1Zugabtei") // --- ENDE --- } Composite(Sequence) { // Story A + B besucht // Story C nicht besucht // --- Zugabteil - Repetition Intro C --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroC1Z") BTC.Run("Depthkit.VIDEOS.RepetitionIntroC1Z") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } Composite(Sequence) { // Story A besucht // Story B nicht besucht BTC.StoryCVisited() // Story A + C besucht // Story B nicht besucht // --- Zugabteil - Repetition Intro B --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroB1Z") BTC.Run("Depthkit.VIDEOS.RepetitionIntroB1Z") RunTree("10_SBB_Zugabteil_Szenenwahl") } Composite(Sequence) { // Story A besucht // Story B + C nicht besucht // --- Zugabteil - Repetition Intro BC --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroBC1") BTC.Run("Depthkit.VIDEOS.RepetitionIntroBC1") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } Composite(Sequence) { // Story A nicht besucht BTC.StoryBVisited() Composite(Selector) { Composite(Sequence) { // Story B besucht // Story A nicht besucht BTC.StoryCVisited() // Story B + C besucht // Story A nicht besucht // --- Zugabteil - Repetition Intro A --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroA1Z") BTC.Run("Depthkit.VIDEOS.RepetitionIntroA1Z") RunTree("10_SBB_Zugabteil_Szenenwahl") } Composite(Sequence) { // Story B besucht // Story A + C nicht besucht // --- Zugabteil - Repetition Intro AC --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroAC1") BTC.Run("Depthkit.VIDEOS.RepetitionIntroAC1") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } Composite(Sequence) { // Story A + B nicht besucht BTC.StoryCVisited() // Story C besucht // Story A + B nicht besucht // --- Zugabteil - Repetition Intro AB --- BTC.Show("Depthkit.VIDEOS.RepetitionIntroAB1") BTC.Run("Depthkit.VIDEOS.RepetitionIntroAB1") RunTree("10_SBB_Zugabteil_Szenenwahl") } Composite(Sequence) { // Nichts besucht Composite(Selector) { Composite(Sequence) { BTC.CompareRepetitionVisitedCounter(0) // --- Zugabteil - Intro ABC erste --- BTC.Show("Depthkit.VIDEOS.IntroABCerste1Zuga") BTC.Run("Depthkit.VIDEOS.IntroABCerste1Zuga") RunTree("10_SBB_Zugabteil_Szenenwahl") } Composite(Sequence) { // Erste Wiederholung BTC.CompareRepetitionVisitedCounter(1) // --- Zugabteil - Intro ABC zweite --- BTC.Show("Depthkit.VIDEOS.IntroABCzweite1Zug") BTC.Run("Depthkit.VIDEOS.IntroABCzweite1Zug") RunTree("10_SBB_Zugabteil_Szenenwahl") } Composite(Sequence) { // Zweite Wiederholung BTC.CompareRepetitionVisitedCounter(2) // --- Zugabteil - Intro ABC dritte --- BTC.Show("Depthkit.VIDEOS.IntroABCdritte1Zug") BTC.Run("Depthkit.VIDEOS.IntroABCdritte1Zug") BTC.SetBool("handmenu_active") RunTree("10_SBB_Zugabteil_Szenenwahl") } } } } // First Selector } // Sequence } Tree("10_SBB_Zugabteil_Szenenwahl") { // --- Zugabteil - Szenenwahl --- Composite(Sequence) { BTC.Run("MediaPlayer.VIDEOS.SzenenwahlF1") BTC.Run("MediaPlayer.VIDEOS.SzenenwahlFidle2") BTC.AddPossbileSpeechIntent("Zugabteil-Exposition-U-4a") BTC.AddPossbileSpeechIntent("Zugabteil-Exposition-U-4b") BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Sequence) { BTC.UserStartedSpeechInput() Composite(Selector) { // -- Selector 1: Intent erkannt Composite(Sequence) { BTC.SpeechIntentRecognized() // Intent erkannt Composite(Race) { Composite(Sequence) { BTC.CompareIntentID("Zugabteil-Exposition-U-4a") BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil-Exposition-U-4b") BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } } } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() } } BTC.Hide("MediaPlayer.VIDEOS.SzenenwahlFidle2") BTC.Run("MediaPlayer.VIDEOS.SzenenwahlF3") BTC.Run("MediaPlayer.VIDEOS.SzenenwahlFidle4") // TODO: Race mit VR Brille und Handy // Race // -- Handmenu Start Composite(Marathon) { BTC.Show("GO.HANDMENU.SpeechButton") BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "picnic") BTC.Show("GO.HANDMENU.Option1Button") BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "grotto") BTC.Show("GO.HANDMENU.Option2Button") } Composite(Race) { Composite(Sequence) { // picnic BTC.Run("NamedEventTrigger.HANDMENU.Option1Button") Composite(Marathon) { BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { // grotto BTC.Run("NamedEventTrigger.HANDMENU.Option2Button") Composite(Marathon) { BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } } // -- Handmenu End // TODO: Check if necessary //BTC.Hide("MediaPlayer.VIDEOS.SzenenwahlFidle4") } } Tree("10_SBB_Zugabteil_Szenenwahl_old") { // ---- BTC.AddPossbileSpeechIntent("Zugabteil.Szenenwahl.3") BTC.AddPossbileSpeechIntent("Zugabteil.Szenenwahl.5") BTC.AddPossbileSpeechIntent("Zugabteil.Szenenwahl.7") BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Sequence) { BTC.UserStartedSpeechInput() Composite(Selector) { // -- Selector 1: Intent erkannt Composite(Sequence) { BTC.SpeechIntentRecognized() BTC.AbortEventListener("NamedGrabEvent.INTERACTABLES.VRBrille") // Intent erkannt Composite(Race) { Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.3") BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.5") BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.7") BTC.ClearPossbileSpeechIntents() // Load Scene: Story C Wandern // ... //BTC.SetStoryCVisited() RunTree("10_SBB_Hide_Videos") } } } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.AbortEventListener("NamedGrabEvent.INTERACTABLES.VRBrille") // Fallback: nicht verstanden, wiederholen // ... BTC.SynthesizeText("Temo di non averla capita. Può ripetere, per favore? In alternativa, può usare l'aiuto sul cellulare che tiene nella mano sinistra.") BTC.SpeechOutputEnded() BTC.StartSpeechIntentRecognition() Composite(Race) { Composite(Sequence) { // Option 1: Spracheingabe BTC.UserStartedSpeechInput() BTC.SpeechIntentRecognized() Composite(Race) { Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.3") BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.5") BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } Composite(Sequence) { BTC.CompareIntentID("Zugabteil.Szenenwahl.7") BTC.ClearPossbileSpeechIntents() // Load Scene: Story C Wandern // ... //BTC.SetStoryCVisited() RunTree("10_SBB_Hide_Videos") } } } Composite(Sequence) { // Option 2: Handmenu Composite(Marathon) { BTC.Show("GO.HANDMENU.SpeechButton") BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "picnic") BTC.Show("GO.HANDMENU.Option1Button") BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "grotto") BTC.Show("GO.HANDMENU.Option2Button") BTC.Set("TextMeshPro.HANDMENU.Option3Button", "text", "escursione") BTC.Show("GO.HANDMENU.Option3Button") } Composite(Race) { Composite(Sequence) { // picnic BTC.Run("NamedEventTrigger.HANDMENU.Option1Button") Composite(Marathon) { BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { // grotto BTC.Run("NamedEventTrigger.HANDMENU.Option2Button") Composite(Marathon) { BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } Composite(Sequence) { // escursione BTC.Run("NamedEventTrigger.HANDMENU.Option3Button") Composite(Marathon) { BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story C Wandern // ... //BTC.SetStoryCVisited() RunTree("10_SBB_Hide_Videos") } } // Ende Race Buttons } // Ende Option 2 Handmenu } // Ende Race Optionen } // Ende Sequence } // Ende Selector } // Ende Sequence 1 // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(10) BTC.CompareUserSpeechInputStarted(false) Decorator(Inverter) { BTC.CompareBool("handmenu_active") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.AbortEventListener("NamedGrabEvent.INTERACTABLES.VRBrille") BTC.IncrementRepetitionVisitedCounter() RunTree("10_SBB_Hide_Videos") RunTree("10_SBB_Zugabteil_Szenenwahl_Selection") } // -- Race 3: VR Brille in die Hand nehmen Composite(Sequence) { BTC.Run("NamedGrabEvent.INTERACTABLES.VRBrille") Decorator(Inverter) { BTC.CompareBool("handmenu_active") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.IncrementRepetitionVisitedCounter() // --- Bilder Bergell --- //BTC.Run("LoadScene.NEXT.35Slideshow") RunTree("10_SBB_Hide_Videos") RunTree("10_SBB_Zugabteil_Szenenwahl_Selection") } // -- Race 4: Hand Menu Composite(Sequence) { BTC.CompareBool("handmenu_active") Composite(Marathon) { BTC.Show("GO.HANDMENU.SpeechButton") BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "picnic") BTC.Show("GO.HANDMENU.Option1Button") BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "grotto") BTC.Show("GO.HANDMENU.Option2Button") BTC.Set("TextMeshPro.HANDMENU.Option3Button", "text", "escursione") BTC.Show("GO.HANDMENU.Option3Button") } Composite(Race) { Composite(Sequence) { // picnic BTC.Run("NamedEventTrigger.HANDMENU.Option1Button") Composite(Marathon) { BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button") BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story A Picknicken BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.20SBB") } Composite(Sequence) { // grotto BTC.Run("NamedEventTrigger.HANDMENU.Option2Button") Composite(Marathon) { BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button") BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story B Grotto BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.30SBB") } Composite(Sequence) { // escursione BTC.Run("NamedEventTrigger.HANDMENU.Option3Button") Composite(Marathon) { BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button") BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option1Button") BTC.Hide("GO.HANDMENU.Option2Button") BTC.Hide("GO.HANDMENU.Option3Button") BTC.Hide("GO.HANDMENU.SpeechButton") BTC.Hide("GO.HANDMENU.SpeechOptions") } BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Load Scene: Story C Wandern // ... //BTC.SetStoryCVisited() RunTree("10_SBB_Hide_Videos") } } } } // Ende Race } } Tree("10_SBB_Hide_Videos") { Composite(Marathon) { BTC.Hide("Depthkit.VIDEOS.RepetitionIntroC1Z") BTC.Hide("Depthkit.VIDEOS.RepetitionIntroB1Z") BTC.Hide("Depthkit.VIDEOS.RepetitionIntroBC1") BTC.Hide("Depthkit.VIDEOS.RepetitionIntroA1Z") BTC.Hide("Depthkit.VIDEOS.RepetitionIntroAC1") BTC.Hide("Depthkit.VIDEOS.RepetitionIntroAB1") BTC.Hide("Depthkit.VIDEOS.IntroABCerste1Zuga") BTC.Hide("Depthkit.VIDEOS.IntroABCzweite1Zug") BTC.Hide("Depthkit.VIDEOS.IntroABCdritte1Zug") } }