openconfiguration/support/
visitor.rs

1use super::Visitable;
2
3pub trait Visitor {
4    #[allow(unused_variables)]
5    fn visit_geometry(&mut self, geometry_name: &str, geometry: &mut crate::ig::Geometry) {}
6
7    #[allow(unused_variables)]
8    fn visit_geometry_index(&mut self, geometry_name: &str, url: &mut String) {}
9
10    #[allow(unused_variables)]
11    fn visit_material(&mut self, material_name: &str, material: &mut crate::ig::Material) {}
12
13    #[allow(unused_variables)]
14    fn visit_material_index(&mut self, material_name: &str, url: &mut String) {}
15
16    #[allow(unused_variables)]
17    fn visit_texture_map(&mut self, map: &mut crate::ig::TextureMap) {}
18
19    #[allow(unused_variables)]
20    fn visit_script(&mut self, script: &mut crate::Script) {}
21
22    #[allow(unused_variables)]
23    /// Visits a path, which may be a URL or a local file path.
24    ///
25    /// This will not be called for hashes or paths used by the commercial data currently.
26    fn visit_path(&mut self, path: &mut String) {}
27}
28
29pub fn visit(scene: &mut crate::Scene, visitor: &mut dyn Visitor) {
30    scene.visit(visitor)
31}
32
33pub trait SceneVisitorExtension {
34    fn visit(&mut self, visitor: &mut dyn Visitor);
35}
36
37impl SceneVisitorExtension for crate::Scene {
38    fn visit(&mut self, visitor: &mut dyn Visitor) {
39        self.visit_with(visitor)
40    }
41}