1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
//! Surface loader.
use serde::Deserialize;
use std::collections::HashMap;
use crate::{dom::Surface, geom::Mesh};
/// Surface parameterisation.
#[derive(Clone, Deserialize)]
pub struct SurfaceBuilder(
/// Mesh name.
pub String,
/// Attribute name.
pub String,
);
impl SurfaceBuilder {
/// Construct a new instance.
#[inline]
#[must_use]
pub fn build<'a, T>(
self,
meshes: &HashMap<String, Mesh>,
attributes: &'a HashMap<String, T>,
) -> Surface<'a, T> {
Surface::new(meshes[&self.0].clone(), &attributes[&self.1])
}
}