Skip to content
Snippets Groups Projects
node_detector.rs 994 B
Newer Older
use crate::{optic_node::{Optical, Dottable, LightResult}, optic_ports::OpticPorts};
use crate::lightdata::LightData;
#[derive(Debug, Default)]
Udo Eisenbarth's avatar
Udo Eisenbarth committed
/// This node rerpresents an universal detector. Any [`LightData`] coming in will be stored internally for later display / export. So far it only has one input (in1).
pub struct NodeDetector {
  light_data: Option<LightData>
}

impl Optical for NodeDetector {
  fn node_type(&self) -> &str {
      "light sink: detector"
  }
  fn ports(&self) -> OpticPorts {
      let mut ports=OpticPorts::new();
      ports.add_input("in1").unwrap();
      ports
  }
  fn analyze(&mut self, incoming_data: LightResult, _analyzer_type: &crate::analyzer::AnalyzerType) -> LightResult {
    let data=incoming_data.into_iter().filter(|data| data.0=="in1").last();
    if let Some(data)=data {
      self.light_data=Some(data.1);
impl Dottable for NodeDetector{
    fn node_color(&self) -> &str {
        "lemonchiffon"
      }
}