616 lines
24 KiB
Plaintext

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")
}
}