melodium_engine/design/
treatment.rs1use super::{Connection, ModelInstanciation, TreatmentInstanciation};
2use crate::descriptor::Treatment as TreatmentDescriptor;
3use core::fmt::Debug;
4use melodium_common::descriptor::Identifier;
5use std::collections::HashMap;
6use std::sync::Weak;
7
8#[derive(Debug, Clone)]
9pub struct Treatment {
10 pub descriptor: Weak<TreatmentDescriptor>,
11 pub model_instanciations: HashMap<String, ModelInstanciation>,
12 pub treatments: HashMap<String, TreatmentInstanciation>,
13 pub connections: Vec<Connection>,
14}
15
16impl Treatment {
17 pub fn make_use(&self, identifier: &Identifier) -> bool {
18 self.model_instanciations
19 .iter()
20 .any(|(_, model)| model.make_use(identifier))
21 || self
22 .treatments
23 .iter()
24 .any(|(_, treatment)| treatment.make_use(identifier))
25 }
26
27 pub fn uses(&self) -> Vec<Identifier> {
28 let mut uses = vec![];
29 uses.extend(
30 self.model_instanciations
31 .iter()
32 .flat_map(|(_, mi)| mi.uses()),
33 );
34 uses.extend(self.treatments.iter().flat_map(|(_, ti)| ti.uses()));
35 uses
36 }
37}