use super::geometry::{GeometryShapeData, SphereGeometry};
use crate::transform::Transform;
#[derive(Debug, PartialEq, Clone)]
pub struct LinkShapeData {
pub main_geometry: GeometryShapeData,
pub geometries: Vec<GeometryShapeData>,
}
impl LinkShapeData {
pub(crate) fn new<I>(iter: I) -> Self
where
I: Iterator<Item = GeometryShapeData>,
{
let geometries: Vec<GeometryShapeData> = (iter).collect();
if geometries.is_empty() {
let main_geometry = GeometryShapeData {
transform: Transform::default(),
geometry: SphereGeometry::new(0.).into(),
};
Self {
main_geometry: main_geometry.clone(),
geometries: vec![main_geometry],
}
} else {
Self {
main_geometry: geometries.first().unwrap().clone(),
geometries,
}
}
}
}