322 lines
13 KiB
Plaintext

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) {
Composite(Selector) {
Composite(Sequence) {
// Story A besucht
BTC.StoryAVisited()
Composite(Selector) {
Composite(Sequence) {
// Story A + B besucht
BTC.StoryBVisited()
// --- Story Ende ---
BTC.Hide("MediaPlayer.VIDEOS.IntroFidle1")
BTC.Run("MediaPlayer.VIDEOS.StoryEndeF1")
BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black")
BTC.Run("LoadScene.NEXT.00Menu")
}
Composite(Sequence) {
// Story A besucht
// Story B nicht besucht
// --- Repetition Intro B ---
BTC.Hide("MediaPlayer.VIDEOS.IntroFidle1")
BTC.Run("MediaPlayer.VIDEOS.RepetitionIntroBF1")
BTC.Run("MediaPlayer.VIDEOS.RepetitionIntroBFi_2")
RunTree("10_SBB_Zugabteil_Szenenwahl")
}
}
}
Composite(Sequence) {
// Story A nicht besucht
BTC.StoryBVisited()
// Story B besucht
// Story A nicht besucht
// --- Repetition Intro A ---
BTC.Hide("MediaPlayer.VIDEOS.IntroFidle1")
BTC.Run("MediaPlayer.VIDEOS.RepetitionIntroAF1")
BTC.Run("MediaPlayer.VIDEOS.RepetitionIntroAFi_2")
RunTree("10_SBB_Zugabteil_Szenenwahl")
}
Composite(Sequence) {
// Story A + B nicht besucht
RunTree("10_SBB_Zugabteil_Intro")
}
} // First Selector
} // Sequence
}
Tree("10_SBB_Zugabteil_Szenenwahl") {
// --- Zugabteil - Szenenwahl ---
Composite(Sequence) {
Composite(Marathon) {
BTC.Hide("MediaPlayer.VIDEOS.RepetitionIntroAFi_2")
BTC.Hide("MediaPlayer.VIDEOS.RepetitionIntroBFi_2")
}
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")
Composite(Race) {
// VR Brille nehmen
Composite(Sequence) {
BTC.Run("NamedGrabEvent.INTERACTABLES.VRBrille")
BTC.FadeOut("FadeScene.XRInteractionHandsSetup.Black")
BTC.Run("LoadScene.NEXT.40Puschlav")
// TODO: Minigame starten
// Nach Minigame: zuruck zu Szenenwahl
}
// Szenenwahl per Handmenu
Composite(Sequence) {
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")
}
} // Race Buttons
} // Handmenu Ende
}
// TODO: Check if necessary
//BTC.Hide("MediaPlayer.VIDEOS.SzenenwahlFidle4")
}
}