fj_core/operations/transform/
surface.rs

1use fj_math::Transform;
2
3use crate::{
4    objects::Surface, operations::insert::Insert, storage::Handle, Core,
5};
6
7use super::{TransformCache, TransformObject};
8
9impl TransformObject for Handle<Surface> {
10    fn transform_with_cache(
11        &self,
12        transform: &Transform,
13        core: &mut Core,
14        cache: &mut TransformCache,
15    ) -> Self {
16        cache
17            .entry(self)
18            .or_insert_with(|| {
19                let surface = Surface::new().insert(core);
20
21                let geometry =
22                    core.layers.geometry.of_surface(self).transform(transform);
23                core.layers
24                    .geometry
25                    .define_surface(surface.clone(), geometry);
26
27                surface
28            })
29            .clone()
30    }
31}