From 680d6b54c93f1cb329add5ff7f5341e8ee6cf7c5 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Thu, 3 Dec 2020 16:25:35 -0600 Subject: [PATCH] Add an example. --- examples/hello_world.rs | 80 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 examples/hello_world.rs diff --git a/examples/hello_world.rs b/examples/hello_world.rs new file mode 100644 index 0000000..e089a09 --- /dev/null +++ b/examples/hello_world.rs @@ -0,0 +1,80 @@ +use bevy::prelude::*; +use bevy_tts::*; + +fn main() { + App::build() + .add_plugins(DefaultPlugins) + .add_plugin(bevy_tts::TtsPlugin) + .add_system(bevy::input::system::exit_on_esc_system.system()) + .add_startup_system(setup) + .add_system(event_poll) + .add_system(greet) + .run(); +} + +// Speaks a bunch of messages and changes TTS properties. +fn setup(mut tts: ResMut) { + tts.speak("Hello, world.", false).unwrap(); + let Features { rate, .. } = tts.supported_features(); + if rate { + let original_rate = tts.get_rate().unwrap(); + tts.speak(format!("Current rate: {}", original_rate), false) + .unwrap(); + let max_rate = tts.max_rate(); + tts.set_rate(max_rate).unwrap(); + tts.speak("This is very fast.", false).unwrap(); + let min_rate = tts.min_rate(); + tts.set_rate(min_rate).unwrap(); + tts.speak("This is very slow.", false).unwrap(); + let normal_rate = tts.normal_rate(); + tts.set_rate(normal_rate).unwrap(); + tts.speak("This is the normal rate.", false).unwrap(); + tts.set_rate(original_rate).unwrap(); + } + let Features { pitch, .. } = tts.supported_features(); + if pitch { + let original_pitch = tts.get_pitch().unwrap(); + let max_pitch = tts.max_pitch(); + tts.set_pitch(max_pitch).unwrap(); + tts.speak("This is high-pitch.", false).unwrap(); + let min_pitch = tts.min_pitch(); + tts.set_pitch(min_pitch).unwrap(); + tts.speak("This is low pitch.", false).unwrap(); + let normal_pitch = tts.normal_pitch(); + tts.set_pitch(normal_pitch).unwrap(); + tts.speak("This is normal pitch.", false).unwrap(); + tts.set_pitch(original_pitch).unwrap(); + } + let Features { volume, .. } = tts.supported_features(); + if volume { + let original_volume = tts.get_volume().unwrap(); + let max_volume = tts.max_volume(); + tts.set_volume(max_volume).unwrap(); + tts.speak("This is loud!", false).unwrap(); + let min_volume = tts.min_volume(); + tts.set_volume(min_volume).unwrap(); + tts.speak("This is quiet.", false).unwrap(); + let normal_volume = tts.normal_volume(); + tts.set_volume(normal_volume).unwrap(); + tts.speak("This is normal volume.", false).unwrap(); + tts.set_volume(original_volume).unwrap(); + } + tts.speak("Press G for a greeting.", false).unwrap(); +} + +// Reports events from TTS subsystem. +fn event_poll( + mut tts_event_reader: Local>, + tts_events: Res>, +) { + for event in tts_event_reader.iter(&tts_events) { + println!("{:?}", event); + } +} + +// Shows how to output speech in response to a keypress. +fn greet(input: Res>, mut tts: ResMut) { + if input.just_pressed(KeyCode::G) { + tts.speak("Hey there!", true).unwrap(); + } +}