fj_core/operations/transform/
surface.rs1use 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}