fj-core 0.49.0

Early-stage b-rep CAD kernel.
Documentation
use fj_math::Transform;

use crate::{
    objects::Surface, operations::insert::Insert, storage::Handle, Core,
};

use super::{TransformCache, TransformObject};

impl TransformObject for Handle<Surface> {
    fn transform_with_cache(
        &self,
        transform: &Transform,
        core: &mut Core,
        cache: &mut TransformCache,
    ) -> Self {
        cache
            .entry(self)
            .or_insert_with(|| {
                let surface = Surface::new().insert(core);

                let geometry =
                    core.layers.geometry.of_surface(self).transform(transform);
                core.layers
                    .geometry
                    .define_surface(surface.clone(), geometry);

                surface
            })
            .clone()
    }
}