use crate::{optic_node::{Optical, Dottable, LightResult}, optic_ports::OpticPorts, error::OpossumError}; use crate::lightdata::LightData; type Result<T> = std::result::Result<T, OpossumError>; #[derive(Debug, Default)] /// 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) -> Result<LightResult> { let data=incoming_data.into_iter().filter(|data| data.0=="in1").last(); if let Some(data)=data { self.light_data=data.1; } Ok(LightResult::default()) } } impl Dottable for NodeDetector{ fn node_color(&self) -> &str { "lemonchiffon" } }