Skip to content

Commit 4f71b2b

Browse files
committed
Code review
1 parent 7a16adb commit 4f71b2b

20 files changed

+267
-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 & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,21 @@
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,
4-
};
5-
use std::{collections::VecDeque, f64::consts::TAU};
6-
7-
use crate::messages::{portfolio::document::utility_types::document_metadata::LayerNodeIdentifier, prelude::Responses};
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::{polygon_vertex_position, extract_polygon_parameters, inside_polygon, inside_star};
12+
use crate::messages::tool::common_functionality::shapes::shape_utility::{star_vertex_position, extract_star_parameters};
13+
use crate::messages::tool::tool_messages::tool_prelude::Key;
814
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-
};
15+
use graph_craft::document::NodeInput;
16+
use graph_craft::document::value::TaggedValue;
17+
use std::collections::VecDeque;
18+
use std::f64::consts::TAU;
2519

2620
#[derive(Clone, Debug, Default, PartialEq)]
2721
pub enum NumberOfPointsHandleState {
@@ -43,6 +37,7 @@ impl NumberOfPointsHandle {
4337
self.handle_state = NumberOfPointsHandleState::Inactive;
4438
self.layer = None;
4539
}
40+
4641
pub fn update_state(&mut self, state: NumberOfPointsHandleState) {
4742
self.handle_state = state;
4843
}
@@ -69,18 +64,16 @@ impl NumberOfPointsHandle {
6964

7065
match &self.handle_state {
7166
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-
}) {
67+
let selected_nodes = document.network_interface.selected_nodes();
68+
let layers = selected_nodes.selected_visible_and_unlocked_layers(&document.network_interface).filter(|layer| {
69+
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
70+
});
71+
for layer in layers {
7972
if let Some((n, radius1, radius2)) = extract_star_parameters(Some(layer), document) {
8073
let viewport = document.metadata().transform_to_viewport(layer);
8174
let center = viewport.transform_point2(DVec2::ZERO);
8275

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

8578
if mouse_position.distance(center) < NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
8679
self.layer = Some(layer);
@@ -94,7 +87,7 @@ impl NumberOfPointsHandle {
9487
let viewport = document.metadata().transform_to_viewport(layer);
9588
let center = viewport.transform_point2(DVec2::ZERO);
9689

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

9992
if mouse_position.distance(center) < NUMBER_OF_POINTS_HANDLE_SPOKE_LENGTH && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
10093
self.layer = Some(layer);
@@ -106,13 +99,11 @@ impl NumberOfPointsHandle {
10699
}
107100
}
108101
NumberOfPointsHandleState::Hover | NumberOfPointsHandleState::Dragging => {
109-
let Some(layer) = self.layer else {
110-
return;
111-
};
102+
let Some(layer) = self.layer else { return };
112103

113104
let Some((n, radius)) = extract_star_parameters(Some(layer), document)
114105
.map(|(n, r1, r2)| (n, r1.max(r2)))
115-
.or_else(|| extract_polygon_parameters(Some(layer), document).map(|(n, r)| (n, r)))
106+
.or_else(|| extract_polygon_parameters(Some(layer), document))
116107
else {
117108
return;
118109
};
@@ -125,8 +116,6 @@ impl NumberOfPointsHandle {
125116
self.layer = None;
126117
self.draw_spokes(center, viewport, n, radius, overlay_context);
127118
responses.add(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::Default });
128-
129-
return;
130119
}
131120
}
132121
}
@@ -146,13 +135,11 @@ impl NumberOfPointsHandle {
146135

147136
match &self.handle_state {
148137
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-
}) {
138+
let selected_nodes = document.network_interface.selected_nodes();
139+
let layers = selected_nodes.selected_visible_and_unlocked_layers(&document.network_interface).filter(|layer| {
140+
graph_modification_utils::get_star_id(*layer, &document.network_interface).is_some() || graph_modification_utils::get_polygon_id(*layer, &document.network_interface).is_some()
141+
});
142+
for layer in layers {
156143
if let Some((n, radius1, radius2)) = extract_star_parameters(Some(layer), document) {
157144
let radius = radius1.max(radius2);
158145
let viewport = document.metadata().transform_to_viewport(layer);
@@ -163,7 +150,7 @@ impl NumberOfPointsHandle {
163150
return;
164151
}
165152
}
166-
let point_on_max_radius = calculate_star_vertex_position(viewport, 0, n, radius1, radius2);
153+
let point_on_max_radius = star_vertex_position(viewport, 0, n, radius1, radius2);
167154

168155
if inside_star(viewport, n, radius1, radius2, mouse_position) && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
169156
self.draw_spokes(center, viewport, n, radius, overlay_context);
@@ -180,7 +167,7 @@ impl NumberOfPointsHandle {
180167
return;
181168
}
182169
}
183-
let point_on_max_radius = calculate_polygon_vertex_position(viewport, 0, n, radius);
170+
let point_on_max_radius = polygon_vertex_position(viewport, 0, n, radius);
184171

185172
if inside_polygon(viewport, n, radius, mouse_position) && point_on_max_radius.distance(center) > GIZMO_HIDE_THRESHOLD {
186173
self.draw_spokes(center, viewport, n, radius, overlay_context);
@@ -190,13 +177,11 @@ impl NumberOfPointsHandle {
190177
}
191178
}
192179
NumberOfPointsHandleState::Hover | NumberOfPointsHandleState::Dragging => {
193-
let Some(layer) = self.layer else {
194-
return;
195-
};
180+
let Some(layer) = self.layer else { return };
196181

197182
let Some((n, radius)) = extract_star_parameters(Some(layer), document)
198183
.map(|(n, r1, r2)| (n, r1.max(r2)))
199-
.or_else(|| extract_polygon_parameters(Some(layer), document).map(|(n, r)| (n, r)))
184+
.or_else(|| extract_polygon_parameters(Some(layer), document))
200185
else {
201186
return;
202187
};
@@ -218,9 +203,7 @@ impl NumberOfPointsHandle {
218203
y: -radius * angle.cos(),
219204
});
220205

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

225208
// If the user zooms out such that shape is very small hide the gizmo
226209
if point.distance(center) < GIZMO_HIDE_THRESHOLD {
@@ -236,15 +219,12 @@ impl NumberOfPointsHandle {
236219
}
237220
}
238221

239-
pub fn update_no_of_sides(&self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque<Message>, drag_start: DVec2) {
222+
pub fn update_number_of_sides(&self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque<Message>, drag_start: DVec2) {
240223
let delta = input.mouse.position - document.metadata().document_to_viewport.transform_point2(drag_start);
241224
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-
};
225+
let net_delta = (delta.length() / 25.).round() * sign;
247226

227+
let Some(layer) = self.layer else { return };
248228
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 {
249229
return;
250230
};

0 commit comments

Comments
 (0)