diff --git a/src/nodes/core.rs b/src/nodes/core.rs index 00f3a59..dfe8ded 100644 --- a/src/nodes/core.rs +++ b/src/nodes/core.rs @@ -1,8 +1,10 @@ +use super::data::PulseSender; use super::field::Field; +use super::spatial::Spatial; use crate::core::client::Client; -use crate::nodes::spatial::Spatial; use anyhow::{anyhow, Result}; use std::rc::{Rc, Weak}; +use std::sync::Arc; use std::{collections::HashMap, vec::Vec}; pub type Signal = fn(&Node, Rc, &[u8]) -> Result<()>; @@ -18,6 +20,7 @@ pub struct Node<'a> { pub spatial: Option>, pub field: Option>, + pub pulse_sender: Option>, } impl<'a> Node<'a> { @@ -45,8 +48,10 @@ impl<'a> Node<'a> { local_signals: HashMap::new(), local_methods: HashMap::new(), destroyable, + spatial: None, field: None, + pulse_sender: None, }; node.add_local_signal("destroy", Node::destroy_flex); node diff --git a/src/nodes/data.rs b/src/nodes/data.rs index ba04fcc..6098745 100644 --- a/src/nodes/data.rs +++ b/src/nodes/data.rs @@ -27,6 +27,7 @@ impl PulseSender { .upgrade() .and_then(|event_loop| event_loop.pulse_senders.add(sender.clone()).ok()); *sender.registry_idx.write().unwrap() = idx; + node.borrow_mut().pulse_sender = Some(sender); Ok(()) } }