Tree("Root") { Composite(Sequence) { RunTree("32_Grotto_Kueche_Intro") BTC.InitializeSpeechManager() BTC.SetSpeechRecognitionLanguage("it-IT") BTC.SetVoiceName("it-IT-FabiolaNeural") Composite(Race) { Composite(Sequence) { // Error in Speech Service: Cancel BTC Trees BTC.SpeechErrorOccured() BTC.SetBool("error") } Composite(Sequence) { RunTree("32_Grotto_Kueche_Intro") //RunTree("32_Grotto_Kueche_Zwiebeln_schneiden") //RunTree("32_Grotto_Kueche_alles_gefunden") //RunTree("32_Grotto_Kueche_Interesse_Kochen") //RunTree("32_Grotto_Kueche_Kochen_Anzahl") //RunTree("32_Grotto_Kueche_Zusammen_Kochen") //RunTree("32_Grotto_Kueche_Parmigiano") } } Composite(Sequence) { BTC.CompareBool("error") // Error Handling BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.Show("GO.GO.SpeechButton") BTC.Set("TextMeshPro.GO.Option1Button", "text", "Restart") BTC.Show("GO.GO.Option1Button") BTC.Run("NamedEventTrigger.GO.Option1Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") } } } Tree("32_Grotto_Kueche_Intro") { // --- Kueche - Intro --- Composite(Sequence) { BTC.Run("MediaPlayer.VIDEOS.KuecheIntroFidle1") BTC.FadeIn("FadeScene.XRInteractionHandsSetup.Black") BTC.Hide("MediaPlayer.VIDEOS.KuecheIntroFidle1") BTC.Run("MediaPlayer.VIDEOS.KuecheIntroF2") BTC.Run("MediaPlayer.VIDEOS.KuecheIntroFidle3") BTC.Wait(5) BTC.Hide("MediaPlayer.VIDEOS.KuecheIntroFidle3") BTC.Run("MediaPlayer.VIDEOS.KuecheIntroF4") BTC.Run("MediaPlayer.VIDEOS.KuecheIntroFidle5") BTC.AddPossbileSpeechIntent("Kueche.Intro.3") // TODO: Update SPeech Intent BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Selector) { Composite(Sequence) { BTC.UserStartedSpeechInput() BTC.SpeechIntentRecognized() BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.KuecheIntroFidle5") } // Intent nicht erkannt Composite(Sequence) { Decorator(Inverter) { BTC.CompareUserSpeechInputStarted(false) } BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.KuecheIntroFidle5") } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() // --- Kueche - Nachfrage Rezept --- BTC.Hide("MediaPlayer.VIDEOS.KuecheIntroFidle5") BTC.Run("MediaPlayer.VIDEOS.NachfrageRezeptF1") BTC.Run("MediaPlayer.VIDEOS.NachfrageRezeptFid_02") BTC.StartSpeechIntentRecognition() Composite(Race) { // -- Race 1: User sagt etwas Composite(Selector) { Composite(Sequence) { BTC.UserStartedSpeechInput() BTC.SpeechIntentRecognized() BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.NachfrageRezeptFid_02") } // Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.NachfrageRezeptFid_02") } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() BTC.Hide("MediaPlayer.VIDEOS.NachfrageRezeptFid_02") BTC.Run("MediaPlayer.VIDEOS.NachfrageRezeptF3") } } } } // --- Kueche - Zwiebeln schneiden --- BTC.Run("MediaPlayer.VIDEOS.ZwiebelnschneidenF_01") BTC.Run("MediaPlayer.VIDEOS.ZwiebelnschneidenF_Idle02") // Race // Zwiebeln schneiden BTC.FindObjectsByTag("SlicedZwiebel", 5) BTC.Show("GO.STATIC.RezeptCheckmark2") // Race Ende BTC.Hide("MediaPlayer.VIDEOS.ZwiebelnschneidenF_Idle02") BTC.Show("Depthkit.VIDEOS.allesgefunden1Kuec") BTC.Run("Depthkit.VIDEOS.allesgefunden1Kuec") BTC.Hide("Depthkit.VIDEOS.allesgefunden1Kuec") // Oel in Topf geben BTC.Run("Particle.INTERACTABLES.Olivenoel") BTC.Show("GO.STATIC.RezeptCheckmark3") BTC.Show("Depthkit.VIDEOS.allesgefunden2Kuec") BTC.Run("Depthkit.VIDEOS.allesgefunden2Kuec") BTC.Hide("Depthkit.VIDEOS.allesgefunden2Kuec") // Herd anstellen - ToDo: Handling in Story? //BTC.Run("NamedGrabEvent.STATIC.Herdschalter") //BTC.Run("StudioEventEmitter.STATIC.HerdplatteAnstelle") // Zwiebeln in Topf geben BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "SlicedZwiebel") BTC.Run("Collider.INTERACTABLES.Topf") BTC.Run("StudioEventEmitter.INTERACTABLES.ZwiebelnInTopf") BTC.Show("GO.STATIC.RezeptCheckmark4") BTC.Show("Depthkit.VIDEOS.allesgefunden3Kuec") BTC.Run("Depthkit.VIDEOS.allesgefunden3Kuec") BTC.Hide("Depthkit.VIDEOS.allesgefunden3Kuec") // Frage beantworten BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.4") BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.6") 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("Kueche.alles_gefunden.4") BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Interesse_Kochen") } Composite(Sequence) { BTC.CompareIntentID("Kueche.alles_gefunden.6") BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() // Fallback Button Composite(Marathon) { BTC.Show("GO.GO.SpeechButton") BTC.Set("TextMeshPro.GO.Option1Button", "text", "Sì.") BTC.Show("GO.GO.Option1Button") BTC.Set("TextMeshPro.GO.Option2Button", "text", "No.") BTC.Show("GO.GO.Option2Button") } Composite(Race) { Composite(Sequence) { // Ja BTC.Run("NamedEventTrigger.GO.Option1Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") RunTree("32_Grotto_Kueche_Interesse_Kochen") } Composite(Sequence) { // Nein BTC.Run("NamedEventTrigger.GO.Option2Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() // Fallback Button Composite(Marathon) { BTC.Show("GO.GO.SpeechButton") BTC.Set("TextMeshPro.GO.Option1Button", "text", "Sì.") BTC.Show("GO.GO.Option1Button") BTC.Set("TextMeshPro.GO.Option2Button", "text", "No.") BTC.Show("GO.GO.Option2Button") } Composite(Race) { Composite(Sequence) { // Ja BTC.Run("NamedEventTrigger.GO.Option1Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") RunTree("32_Grotto_Kueche_Interesse_Kochen") } Composite(Sequence) { // Nein BTC.Run("NamedEventTrigger.GO.Option2Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } } } } Tree("32_Grotto_Kueche_Interesse_Kochen") { // --- Kueche - Interesse Kochen --- Composite(Sequence) { BTC.Show("Depthkit.VIDEOS.InteresseKochen1Ku") BTC.Run("Depthkit.VIDEOS.InteresseKochen1Ku") BTC.Hide("Depthkit.VIDEOS.InteresseKochen1Ku") // Frage beantworten BTC.AddPossbileSpeechIntent("Kueche.Interesse_Kochen.2") 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 BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Kochen_Anzahl") } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Kochen_Anzahl") } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } } Tree("32_Grotto_Kueche_Kochen_Anzahl") { // --- Kueche - Kochen Anzahl --- Composite(Sequence) { BTC.Show("Depthkit.VIDEOS.KochenAnzahl1Kuech") BTC.Run("Depthkit.VIDEOS.KochenAnzahl1Kuech") BTC.Hide("Depthkit.VIDEOS.KochenAnzahl1Kuech") // Frage beantworten BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.2") BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.4") 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("Kueche.Kochen_Anzahl.2") BTC.ClearPossbileSpeechIntents() //RunTree("32_Grotto_Kueche_Selbststaendig_Kochen") RunTree("32_Grotto_Kueche_Zusammen_Kochen") } Composite(Sequence) { BTC.CompareIntentID("Kueche.Kochen_Anzahl.4") BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } // -- Selector 2: Intent nicht erkannt Composite(Sequence) { BTC.ClearPossbileSpeechIntents() // Fallback Button Composite(Marathon) { BTC.Show("GO.GO.SpeechButton") BTC.Set("TextMeshPro.GO.Option1Button", "text", "molto spesso") BTC.Show("GO.GO.Option1Button") BTC.Set("TextMeshPro.GO.Option2Button", "text", "raramente") BTC.Show("GO.GO.Option2Button") } Composite(Race) { Composite(Sequence) { // sehr oft BTC.Run("NamedEventTrigger.GO.Option1Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option2Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") //RunTree("32_Grotto_Kueche_Selbststaendig_Kochen") RunTree("32_Grotto_Kueche_Zusammen_Kochen") } Composite(Sequence) { // selten BTC.Run("NamedEventTrigger.GO.Option2Button") BTC.AbortEventListener("NamedEventTrigger.GO.Option1Button") BTC.Hide("GO.GO.Option1Button") BTC.Hide("GO.GO.Option2Button") BTC.Hide("GO.GO.SpeechButton") BTC.Hide("GO.GO.SpeechOptions") RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } } } // -- Race 2: User sagt nichts Composite(Sequence) { BTC.Wait(5) BTC.CompareUserSpeechInputStarted(false) BTC.AbortSpeechEventListener() BTC.StopSpeechIntentRecognition() BTC.ClearPossbileSpeechIntents() RunTree("32_Grotto_Kueche_Zusammen_Kochen") } } } } Tree("32_Grotto_Kueche_Zusammen_Kochen") { // --- Kueche - Zusammen Kochen --- Composite(Sequence) { BTC.Show("Depthkit.VIDEOS.ZusammenKochen1Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen1Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen1Kue") // Risotto in Topf geben BTC.Run("GO/Particle.INTERACTABLES.Risotto") BTC.Hide("GO.INTERACTABLES.Reis") BTC.Hide("GO/Particle.INTERACTABLES.Risotto") BTC.Show("GO.STATIC.RezeptCheckmark5") // Ruehren BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Loeffel") BTC.Run("Collider.INTERACTABLES.Topf") BTC.Wait(2) // Wie lange ruehren? BTC.Show("Depthkit.VIDEOS.ZusammenKochen2Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen2Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen2Kue") // Wein in Topf giessen BTC.Run("Particle.INTERACTABLES.Weisswein") BTC.StopSound("StudioEventEmitter.INTERACTABLES.ZwiebelnInTopf") BTC.Run("StudioEventEmitter.INTERACTABLES.Abloeschen") BTC.Show("GO.STATIC.RezeptCheckmark6") Composite(Marathon) { Composite(Sequence) { BTC.Wait(16) BTC.SetFloat("StudioEventEmitter.INTERACTABLES.Abloeschen", "blubbern.transition", 1) BTC.Show("GO.INTERACTABLES.ChangeSound") // Ruehren } Composite(Sequence) { BTC.Wait(5) BTC.Show("Depthkit.VIDEOS.ZusammenKochen3Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen3Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen3Kue") } } // Bouillon in Topf geben BTC.Run("Particle.INTERACTABLES.Bouillon") BTC.Show("GO.STATIC.RezeptCheckmark7") BTC.Show("Depthkit.VIDEOS.ZusammenKochen4Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen4Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen4Kue") // Glas Wasser mit Steinpilze in Topf geben BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Steinpilze") BTC.Run("Collider.INTERACTABLES.Topf") BTC.Show("GO.STATIC.RezeptCheckmark8") RunTree("32_Grotto_Kueche_Parmigiano") } } Tree("32_Grotto_Kueche_Parmigiano") { // --- Kueche - Parmigiano --- Composite(Sequence) { BTC.Show("Depthkit.VIDEOS.ZusammenKochen5Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen5Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen5Kue") // Parmigiano in Topf geben BTC.Run("Particle.INTERACTABLES.Parmesan") BTC.Show("GO.STATIC.RezeptCheckmark9") BTC.Show("Depthkit.VIDEOS.ZusammenKochen6Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen6Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen6Kue") // Antwort User BTC.AddPossbileSpeechIntent("Kueche.Zusammen_Kochen.6") 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 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.Show("Depthkit.VIDEOS.ZusammenKochen7Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen7Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen7Kue") // Stelle für Pfanne leuchtet BTC.Enable("NamedOutline.INTERACTABLES.TopfUntersetzer") BTC.Set("Collider.INTERACTABLES.Topfuntersetzer", "otherTag", "Topf") Composite(Race) { Composite(Sequence) { // Pfanne rueber stellen BTC.Run("Collider.INTERACTABLES.Topfuntersetzer") } Composite(Sequence) { // Keine Reaction BTC.Wait(5) BTC.Show("Depthkit.VIDEOS.ZusammenKochen8Kue") BTC.Run("Depthkit.VIDEOS.ZusammenKochen8Kue") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen8Kue") // Pfanne rueber stellen BTC.Run("Collider.INTERACTABLES.Topfuntersetzer") } } BTC.Hide("Depthkit.VIDEOS.ZusammenKochen8Kue") BTC.Disable("NamedOutline.INTERACTABLES.TopfUntersetzer") BTC.Show("Depthkit.VIDEOS.ZusammenKochen10Ku") BTC.Run("Depthkit.VIDEOS.ZusammenKochen10Ku") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen10Ku") BTC.Show("Depthkit.VIDEOS.ZusammenKochen12Ku") BTC.Run("Depthkit.VIDEOS.ZusammenKochen12Ku") BTC.Hide("Depthkit.VIDEOS.ZusammenKochen12Ku") // --- Kueche - Outro --- BTC.Show("Depthkit.VIDEOS.Outro1Kueche") BTC.Run("Depthkit.VIDEOS.Outro1Kueche") BTC.Hide("Depthkit.VIDEOS.Outro1Kueche") BTC.Show("Depthkit.VIDEOS.Outro2Kueche") BTC.Run("Depthkit.VIDEOS.Outro2Kueche") BTC.Hide("Depthkit.VIDEOS.Outro2Kueche") // Name sagen BTC.AddPossbileSpeechIntent("Kueche.Outro.4") 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.Show("Depthkit.VIDEOS.Outro7Kueche") BTC.Run("Depthkit.VIDEOS.Outro7Kueche") BTC.Hide("Depthkit.VIDEOS.Outro7Kueche") BTC.Show("Depthkit.VIDEOS.Outro8Kueche") BTC.Run("Depthkit.VIDEOS.Outro8Kueche") BTC.Hide("Depthkit.VIDEOS.Outro8Kueche") BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black") BTC.Run("LoadScene.NEXT.32Grotto3") } }