From e7699bbcbd259c08b9a9c646f6ad5580f4e95d48 Mon Sep 17 00:00:00 2001 From: Henry Sloan Date: Thu, 15 Jul 2021 02:05:46 -0400 Subject: [PATCH] Transform nudge coordinates to viewport space (#264) * Transform nudge coordinates to viewport space * Refactor nudge transform for clarity --- core/editor/src/document/document_message_handler.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/editor/src/document/document_message_handler.rs b/core/editor/src/document/document_message_handler.rs index d83f1cf3d..5aa3f7910 100644 --- a/core/editor/src/document/document_message_handler.rs +++ b/core/editor/src/document/document_message_handler.rs @@ -5,7 +5,7 @@ use crate::{ }; use document_core::layers::Layer; use document_core::{DocumentResponse, LayerId, Operation as DocumentOperation}; -use glam::{DAffine2, DVec2}; +use glam::DAffine2; use log::warn; use crate::document::Document; @@ -534,10 +534,16 @@ impl MessageHandler for DocumentMessageHand } NudgeSelectedLayers(x, y) => { let paths: Vec> = self.selected_layers_sorted(); + + let delta = { + let root_layer_rotation = self.layerdata_mut(&vec![]).rotation; + let rotate_to_viewport_space = DAffine2::from_angle(root_layer_rotation).inverse(); + rotate_to_viewport_space.transform_point2((x, y).into()) + }; for path in paths { let operation = DocumentOperation::TransformLayer { path, - transform: DAffine2::from_translation(DVec2::new(x, y)).to_cols_array(), + transform: DAffine2::from_translation(delta).to_cols_array(), }; responses.push_back(operation.into()); }