Skip to content

Commit 0813643

Browse files
committed
Code review
1 parent 7a16adb commit 0813643

20 files changed

+268
-364
lines changed

editor/src/messages/input_mapper/input_mappings.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ pub fn input_mappings() -> Mapping {
178178
entry!(KeyDown(Escape); action_dispatch=ShapeToolMessage::Abort),
179179
entry!(KeyDown(BracketLeft); action_dispatch=ShapeToolMessage::DecreaseSides),
180180
entry!(KeyDown(BracketRight); action_dispatch=ShapeToolMessage::IncreaseSides),
181-
entry!(PointerMove; refresh_keys=[Alt, Shift, Control], action_dispatch=ShapeToolMessage::PointerMove ([Alt, Shift, Control, Shift])),
181+
entry!(PointerMove; refresh_keys=[Alt, Shift, Control], action_dispatch=ShapeToolMessage::PointerMove([Alt, Shift, Control, Shift])),
182182
entry!(KeyDown(ArrowUp); modifiers=[Shift, ArrowLeft], action_dispatch=ShapeToolMessage::NudgeSelectedLayers { delta_x: -BIG_NUDGE_AMOUNT, delta_y: -BIG_NUDGE_AMOUNT, resize: Alt, resize_opposite_corner: Control }),
183183
entry!(KeyDown(ArrowUp); modifiers=[Shift, ArrowRight], action_dispatch=ShapeToolMessage::NudgeSelectedLayers { delta_x: BIG_NUDGE_AMOUNT, delta_y: -BIG_NUDGE_AMOUNT, resize: Alt, resize_opposite_corner: Control }),
184184
entry!(KeyDown(ArrowUp); modifiers=[Shift], action_dispatch=ShapeToolMessage::NudgeSelectedLayers { delta_x: 0., delta_y: -BIG_NUDGE_AMOUNT, resize: Alt, resize_opposite_corner: Control }),
@@ -315,9 +315,9 @@ pub fn input_mappings() -> Mapping {
315315
entry!(KeyDown(KeyA); action_dispatch=ToolMessage::ActivateToolPath),
316316
entry!(KeyDown(KeyP); action_dispatch=ToolMessage::ActivateToolPen),
317317
entry!(KeyDown(KeyN); action_dispatch=ToolMessage::ActivateToolFreehand),
318-
entry!(KeyDown(KeyL); action_dispatch=ToolMessage::ActivateShapeLine),
319-
entry!(KeyDown(KeyM); action_dispatch=ToolMessage::ActivateShapeRectangle),
320-
entry!(KeyDown(KeyE); action_dispatch=ToolMessage::ActivateShapeEllipse),
318+
entry!(KeyDown(KeyL); action_dispatch=ToolMessage::ActivateToolShapeLine),
319+
entry!(KeyDown(KeyM); action_dispatch=ToolMessage::ActivateToolShapeRectangle),
320+
entry!(KeyDown(KeyE); action_dispatch=ToolMessage::ActivateToolShapeEllipse),
321321
entry!(KeyDown(KeyY); action_dispatch=ToolMessage::ActivateToolShape),
322322
entry!(KeyDown(KeyB); action_dispatch=ToolMessage::ActivateToolBrush),
323323
entry!(KeyDown(KeyX); modifiers=[Accel, Shift], action_dispatch=ToolMessage::ResetColors),

editor/src/messages/tool/common_functionality/shape_gizmos/number_of_points_handle.rs

Lines changed: 40 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
1-
use crate::messages::tool::{
2-
common_functionality::shapes::shape_utility::{calculate_polygon_vertex_position, extract_polygon_parameters, inside_polygon, inside_star},
3-
tool_messages::tool_prelude::Key,
1+
use crate::consts::{GIZMO_HIDE_THRESHOLD, NUMBER_OF_POINTS_HANDLE_SPOKE_EXTENSION, NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH, POINT_RADIUS_HANDLE_SEGMENT_THRESHOLD};
2+
use crate::messages::frontend::utility_types::MouseCursorIcon;
3+
use crate::messages::message::Message;
4+
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
5+
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
6+
use crate::messages::portfolio::document::utility_types::network_interface::InputConnector;
7+
use crate::messages::prelude::Responses;
8+
use crate::messages::prelude::{DocumentMessageHandler, FrontendMessage, InputPreprocessorMessageHandler, NodeGraphMessage};
9+
use crate::messages::tool::common_functionality::graph_modification_utils;
10+
use crate::messages::tool::common_functionality::shape_editor::ShapeState;
11+
use crate::messages::tool::common_functionality::shapes::shape_utility::{
12+
extract_polygon_parameters, extract_star_parameters, inside_polygon, inside_star, polygon_vertex_position, star_vertex_position,
413
};
5-
use std::{collections::VecDeque, f64::consts::TAU};
6-
7-
use crate::messages::{portfolio::document::utility_types::document_metadata::LayerNodeIdentifier, prelude::Responses};
14+
use crate::messages::tool::tool_messages::tool_prelude::Key;
815
use glam::{DAffine2, DVec2};
9-
use graph_craft::document::{NodeInput, value::TaggedValue};
10-
11-
use crate::{
12-
consts::{GIZMO_HIDE_THRESHOLD, NUMBER_OF_POINTS_HANDLE_SPOKE_EXTENSION, NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH, POINT_RADIUS_HANDLE_SEGMENT_THRESHOLD},
13-
messages::{
14-
frontend::utility_types::MouseCursorIcon,
15-
message::Message,
16-
portfolio::document::{overlays::utility_types::OverlayContext, utility_types::network_interface::InputConnector},
17-
prelude::{DocumentMessageHandler, FrontendMessage, InputPreprocessorMessageHandler, NodeGraphMessage},
18-
tool::common_functionality::{
19-
graph_modification_utils,
20-
shape_editor::ShapeState,
21-
shapes::shape_utility::{calculate_star_vertex_position, extract_star_parameters},
22-
},
23-
},
24-
};
16+
use graph_craft::document::NodeInput;
17+
use graph_craft::document::value::TaggedValue;
18+
use std::collections::VecDeque;
19+
use std::f64::consts::TAU;
2520

2621
#[derive(Clone, Debug, Default, PartialEq)]
2722
pub enum NumberOfPointsHandleState {
@@ -43,6 +38,7 @@ impl NumberOfPointsHandle {
4338
self.handle_state = NumberOfPointsHandleState::Inactive;
4439
self.layer = None;
4540
}
41+
4642
pub fn update_state(&mut self, state: NumberOfPointsHandleState) {
4743
self.handle_state = state;
4844
}
@@ -69,18 +65,16 @@ impl NumberOfPointsHandle {
6965

7066
match &self.handle_state {
7167
NumberOfPointsHandleState::Inactive => {
72-
for layer in document
73-
.network_interface
74-
.selected_nodes()
75-
.selected_visible_and_unlocked_layers(&document.network_interface)
76-
.filter(|layer| {
77-
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
78-
}) {
68+
let selected_nodes = document.network_interface.selected_nodes();
69+
let layers = selected_nodes.selected_visible_and_unlocked_layers(&document.network_interface).filter(|layer| {
70+
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
71+
});
72+
for layer in layers {
7973
if let Some((n, radius1, radius2)) = extract_star_parameters(Some(layer), document) {
8074
let viewport = document.metadata().transform_to_viewport(layer);
8175
let center = viewport.transform_point2(DVec2::ZERO);
8276

83-
let point_on_max_radius = calculate_star_vertex_position(viewport, 0, n, radius1, radius2);
77+
let point_on_max_radius = star_vertex_position(viewport, 0, n, radius1, radius2);
8478

8579
if mouse_position.distance(center) < NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
8680
self.layer = Some(layer);
@@ -94,7 +88,7 @@ impl NumberOfPointsHandle {
9488
let viewport = document.metadata().transform_to_viewport(layer);
9589
let center = viewport.transform_point2(DVec2::ZERO);
9690

97-
let point_on_max_radius = calculate_polygon_vertex_position(viewport, 0, n, radius);
91+
let point_on_max_radius = polygon_vertex_position(viewport, 0, n, radius);
9892

9993
if mouse_position.distance(center) < NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
10094
self.layer = Some(layer);
@@ -106,13 +100,11 @@ impl NumberOfPointsHandle {
106100
}
107101
}
108102
NumberOfPointsHandleState::Hover | NumberOfPointsHandleState::Dragging => {
109-
let Some(layer) = self.layer else {
110-
return;
111-
};
103+
let Some(layer) = self.layer else { return };
112104

113105
let Some((n, radius)) = extract_star_parameters(Some(layer), document)
114106
.map(|(n, r1, r2)| (n, r1.max(r2)))
115-
.or_else(|| extract_polygon_parameters(Some(layer), document).map(|(n, r)| (n, r)))
107+
.or_else(|| extract_polygon_parameters(Some(layer), document))
116108
else {
117109
return;
118110
};
@@ -125,8 +117,6 @@ impl NumberOfPointsHandle {
125117
self.layer = None;
126118
self.draw_spokes(center, viewport, n, radius, overlay_context);
127119
responses.add(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::Default });
128-
129-
return;
130120
}
131121
}
132122
}
@@ -146,13 +136,11 @@ impl NumberOfPointsHandle {
146136

147137
match &self.handle_state {
148138
NumberOfPointsHandleState::Inactive => {
149-
for layer in document
150-
.network_interface
151-
.selected_nodes()
152-
.selected_visible_and_unlocked_layers(&document.network_interface)
153-
.filter(|layer| {
154-
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
155-
}) {
139+
let selected_nodes = document.network_interface.selected_nodes();
140+
let layers = selected_nodes.selected_visible_and_unlocked_layers(&document.network_interface).filter(|layer| {
141+
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
142+
});
143+
for layer in layers {
156144
if let Some((n, radius1, radius2)) = extract_star_parameters(Some(layer), document) {
157145
let radius = radius1.max(radius2);
158146
let viewport = document.metadata().transform_to_viewport(layer);
@@ -163,7 +151,7 @@ impl NumberOfPointsHandle {
163151
return;
164152
}
165153
}
166-
let point_on_max_radius = calculate_star_vertex_position(viewport, 0, n, radius1, radius2);
154+
let point_on_max_radius = star_vertex_position(viewport, 0, n, radius1, radius2);
167155

168156
if inside_star(viewport, n, radius1, radius2, mouse_position) && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
169157
self.draw_spokes(center, viewport, n, radius, overlay_context);
@@ -180,7 +168,7 @@ impl NumberOfPointsHandle {
180168
return;
181169
}
182170
}
183-
let point_on_max_radius = calculate_polygon_vertex_position(viewport, 0, n, radius);
171+
let point_on_max_radius = polygon_vertex_position(viewport, 0, n, radius);
184172

185173
if inside_polygon(viewport, n, radius, mouse_position) && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
186174
self.draw_spokes(center, viewport, n, radius, overlay_context);
@@ -190,13 +178,11 @@ impl NumberOfPointsHandle {
190178
}
191179
}
192180
NumberOfPointsHandleState::Hover | NumberOfPointsHandleState::Dragging => {
193-
let Some(layer) = self.layer else {
194-
return;
195-
};
181+
let Some(layer) = self.layer else { return };
196182

197183
let Some((n, radius)) = extract_star_parameters(Some(layer), document)
198184
.map(|(n, r1, r2)| (n, r1.max(r2)))
199-
.or_else(|| extract_polygon_parameters(Some(layer), document).map(|(n, r)| (n, r)))
185+
.or_else(|| extract_polygon_parameters(Some(layer), document))
200186
else {
201187
return;
202188
};
@@ -218,9 +204,7 @@ impl NumberOfPointsHandle {
218204
y: -radius * angle.cos(),
219205
});
220206

221-
let Some(direction) = (point - center).try_normalize() else {
222-
continue;
223-
};
207+
let Some(direction) = (point - center).try_normalize() else { continue };
224208

225209
// If the user zooms out such that shape is very small hide the gizmo
226210
if point.distance(center) < GIZMO_HIDE_THRESHOLD {
@@ -236,15 +220,12 @@ impl NumberOfPointsHandle {
236220
}
237221
}
238222

239-
pub fn update_no_of_sides(&self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque<Message>, drag_start: DVec2) {
223+
pub fn update_number_of_sides(&self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque<Message>, drag_start: DVec2) {
240224
let delta = input.mouse.position - document.metadata().document_to_viewport.transform_point2(drag_start);
241225
let sign = (input.mouse.position.x - document.metadata().document_to_viewport.transform_point2(drag_start).x).signum();
242-
let net_delta = (delta.length() / 25.0).round() * sign;
243-
244-
let Some(layer) = self.layer else {
245-
return;
246-
};
226+
let net_delta = (delta.length() / 25.).round() * sign;
247227

228+
let Some(layer) = self.layer else { return };
248229
let Some(node_id) = graph_modification_utils::get_star_id(layer, &document.network_interface).or(graph_modification_utils::get_polygon_id(layer, &document.network_interface)) else {
249230
return;
250231
};

0 commit comments

Comments
 (0)