From dd283d96c19188b9b8f610f6cefa2dce4011c1da Mon Sep 17 00:00:00 2001 From: Kevin Reid Date: Sat, 2 Dec 2023 16:35:27 -0800 Subject: [PATCH] Fix `Text::installation()` bounding box positioning under transformation. --- all-is-cubes/src/block/text.rs | 35 +++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/all-is-cubes/src/block/text.rs b/all-is-cubes/src/block/text.rs index a4d4ed321..d63879934 100644 --- a/all-is-cubes/src/block/text.rs +++ b/all-is-cubes/src/block/text.rs @@ -95,6 +95,8 @@ impl Text { /// Each individual block is given to `block_fn` to allow alterations. /// /// The transaction has no preconditions. + /// + /// Panics if `transform` causes coordinate overflow. pub fn installation( &self, transform: Gridgid, @@ -102,21 +104,24 @@ impl Text { ) -> SpaceTransaction { let dst_to_src_transform = transform.inverse(); let block_rotation = transform.rotation; - SpaceTransaction::filling(self.bounding_blocks(), |cube| { - space::CubeTransaction::replacing( - None, - Some(block_fn( - Block::from_primitive(block::Primitive::Text { - text: self.clone(), - offset: dst_to_src_transform - .transform_cube(cube) - .lower_bounds() - .to_vector(), - }) - .rotate(block_rotation), - )), - ) - }) + SpaceTransaction::filling( + self.bounding_blocks().transform(transform).unwrap(), + |cube| { + space::CubeTransaction::replacing( + None, + Some(block_fn( + Block::from_primitive(block::Primitive::Text { + text: self.clone(), + offset: dst_to_src_transform + .transform_cube(cube) + .lower_bounds() + .to_vector(), + }) + .rotate(block_rotation), + )), + ) + }, + ) } pub(crate) fn evaluate(