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 ;
815use 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 ) ]
2722pub 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