diff --git a/ui/src/engine/diamond.rs b/ui/src/engine/diamond.rs index 356b2228..26c975ff 100644 --- a/ui/src/engine/diamond.rs +++ b/ui/src/engine/diamond.rs @@ -1079,6 +1079,55 @@ impl EventHandler for Runner { )?; } + Event::VoiceOcclusionGlasses => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionGlasses), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionMask => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionMask), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionHair => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionHair), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionSunglasses => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionSunglasses), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionSegmentation => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionSegmentation), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionOther => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionOther), + Duration::ZERO, + )?; + } + + Event::VoiceOcclusionEye => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionEye), + Duration::ZERO, + )?; + } + Event::GoodInternet => { self.operator_idle.good_internet(); } diff --git a/ui/src/engine/mod.rs b/ui/src/engine/mod.rs index 0f24eb2a..18c5ead4 100644 --- a/ui/src/engine/mod.rs +++ b/ui/src/engine/mod.rs @@ -402,6 +402,34 @@ event_enum! { #[event_enum(method = voice_open_eyes)] VoiceOpenEyes, + /// Voice: glasses occlusion detected + #[event_enum(method = voice_occlusion_glasses)] + VoiceOcclusionGlasses, + + /// Voice: mask occlusion detected + #[event_enum(method = voice_occlusion_mask)] + VoiceOcclusionMask, + + /// Voice: hair occlusion detected + #[event_enum(method = voice_occlusion_hair)] + VoiceOcclusionHair, + + /// Voice: sunglasses occlusion detected + #[event_enum(method = voice_occlusion_sunglasses)] + VoiceOcclusionSunglasses, + + /// Voice: segmentation occlusion detected + #[event_enum(method = voice_occlusion_segmentation)] + VoiceOcclusionSegmentation, + + /// Voice: other face occlusion detected + #[event_enum(method = voice_occlusion_other)] + VoiceOcclusionOther, + + /// Voice: eye occlusion detected + #[event_enum(method = voice_occlusion_eye)] + VoiceOcclusionEye, + /// Set volume [0..100] #[event_enum(method = sound_volume)] SoundVolume { diff --git a/ui/src/engine/pearl/self_serve.rs b/ui/src/engine/pearl/self_serve.rs index 9479782d..4e939ae3 100644 --- a/ui/src/engine/pearl/self_serve.rs +++ b/ui/src/engine/pearl/self_serve.rs @@ -741,6 +741,48 @@ impl Runner { Duration::ZERO, )?; } + Event::VoiceOcclusionGlasses => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionGlasses), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionMask => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionMask), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionHair => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionHair), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionSunglasses => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionSunglasses), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionSegmentation => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionSegmentation), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionOther => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionOther), + Duration::ZERO, + )?; + } + Event::VoiceOcclusionEye => { + self.sound.queue( + sound::Type::Voice(sound::Voice::OcclusionEye), + Duration::ZERO, + )?; + } _ => {} } Ok(()) diff --git a/ui/src/sound/mod.rs b/ui/src/sound/mod.rs index fba755e9..0e489871 100644 --- a/ui/src/sound/mod.rs +++ b/ui/src/sound/mod.rs @@ -248,6 +248,20 @@ sound_enum! { PleaseDontShutDown, #[sound_enum(file = "voice_iris_open")] OpenEyes, + #[sound_enum(file = "voice_occlusion_glasses")] + OcclusionGlasses, + #[sound_enum(file = "voice_occlusion_mask")] + OcclusionMask, + #[sound_enum(file = "voice_occlusion_hair")] + OcclusionHair, + #[sound_enum(file = "voice_occlusion_sunglasses")] + OcclusionSunglasses, + #[sound_enum(file = "voice_occlusion_segmentation")] + OcclusionSegmentation, + #[sound_enum(file = "voice_occlusion_other")] + OcclusionOther, + #[sound_enum(file = "voice_occlusion_eye")] + OcclusionEye, } }