From 68d1d9e011d37a8952e4faea1495043c3abe5ac0 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Wed, 30 Sep 2020 11:57:50 -0500 Subject: [PATCH] WIP: Try passing in utterance to signals. --- TTS.gd | 14 ++++++++------ src/lib.rs | 41 +++++++++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/TTS.gd b/TTS.gd index 7f3f2a9..3f3bccf 100644 --- a/TTS.gd +++ b/TTS.gd @@ -1,9 +1,9 @@ tool extends Node -signal utterance_begin +signal utterance_begin(utterance) -signal utterance_end +signal utterance_end(utterance) var TTS @@ -235,12 +235,14 @@ func singular_or_plural(count, singular, plural): return plural -func _on_utterance_begin(): - emit_signal("utterance_begin") +func _on_utterance_begin(utterance): + print("Here") + print(utterance) + emit_signal("utterance_begin", utterance) -func _on_utterance_end(): - emit_signal("utterance_end") +func _on_utterance_end(utterance): + emit_signal("utterance_end", utterance) func _exit_tree(): diff --git a/src/lib.rs b/src/lib.rs index e6d0f87..daad223 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,17 @@ use std::sync::mpsc::{channel, Receiver}; use gdnative::prelude::*; use tts::{Features, UtteranceId, TTS as Tts}; +#[derive(NativeClass)] +#[inherit(Reference)] +struct Utterance(pub(crate) Option); + +#[methods] +impl Utterance { + fn new(_owner: &Reference) -> Self { + Self(None) + } +} + enum Msg { UtteranceBegin(UtteranceId), UtteranceEnd(UtteranceId), @@ -144,11 +155,21 @@ impl TTS { .done(); builder.add_signal(Signal { name: "utterance_begin", - args: &[], + args: &[SignalArgument { + name: "utterance", + default: Variant::default(), + export_info: ExportInfo::new(VariantType::Object), + usage: PropertyUsage::DEFAULT, + }], }); builder.add_signal(Signal { name: "utterance_end", - args: &[], + args: &[SignalArgument { + name: "utterance", + default: Variant::default(), + export_info: ExportInfo::new(VariantType::Object), + usage: PropertyUsage::DEFAULT, + }], }); } @@ -185,11 +206,19 @@ impl TTS { fn _process(&mut self, owner: &Node, _delta: f32) { if let Some(msg) = self.1.try_recv().ok() { match msg { - Msg::UtteranceBegin(_utterance) => { - owner.emit_signal("utterance_begin", &[]); + Msg::UtteranceBegin(utterance_id) => { + let utterance: Instance = Instance::new(); + /*utterance + .map_mut(|u, _| u.0 = Some(utterance_id)) + .expect("Failed to set utterance ID");*/ + owner.emit_signal("utterance_begin", &[utterance.owned_to_variant()]); } - Msg::UtteranceEnd(_utterance) => { - owner.emit_signal("utterance_end", &[]); + Msg::UtteranceEnd(utterance_id) => { + let utterance: Instance = Instance::new(); + /*utterance + .map_mut(|u, _| u.0 = Some(utterance_id)) + .expect("Failed to set utterance ID");*/ + owner.emit_signal("utterance_end", &[utterance.owned_to_variant()]); } } }