Skip to content

Commit 1be3fa4

Browse files
committed
fix: replace hardcoded input indices with ::INDEX constants
Fixes #1490
1 parent 4a6cdff commit 1be3fa4

File tree

14 files changed

+78
-34
lines changed

14 files changed

+78
-34
lines changed

editor/src/messages/portfolio/document/graph_operation/transform_utils.rs

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ use crate::messages::portfolio::document::utility_types::network_interface::{Inp
22
use glam::{DAffine2, DVec2};
33
use graph_craft::document::value::TaggedValue;
44
use graph_craft::document::{NodeId, NodeInput};
5+
use graphene_std::NodeInputDecleration;
56
use graphene_std::subpath::Subpath;
7+
use graphene_std::transform_nodes::transform::*;
68
use graphene_std::vector::PointId;
79

810
/// Convert an affine transform into the tuple `(scale, angle, translation, shear)` assuming `shear.y = 0`.
@@ -37,10 +39,10 @@ pub fn update_transform(network_interface: &mut NodeNetworkInterface, node_id: &
3739
let rotation = rotation.to_degrees();
3840
let shear = DVec2::new(shear.x.atan().to_degrees(), shear.y.atan().to_degrees());
3941

40-
network_interface.set_input(&InputConnector::node(*node_id, 1), NodeInput::value(TaggedValue::DVec2(translation), false), &[]);
41-
network_interface.set_input(&InputConnector::node(*node_id, 2), NodeInput::value(TaggedValue::F64(rotation), false), &[]);
42-
network_interface.set_input(&InputConnector::node(*node_id, 3), NodeInput::value(TaggedValue::DVec2(scale), false), &[]);
43-
network_interface.set_input(&InputConnector::node(*node_id, 4), NodeInput::value(TaggedValue::DVec2(shear), false), &[]);
42+
network_interface.set_input(&InputConnector::node(*node_id, TranslationInput::INDEX), NodeInput::value(TaggedValue::DVec2(translation), false), &[]);
43+
network_interface.set_input(&InputConnector::node(*node_id, RotationInput::INDEX), NodeInput::value(TaggedValue::F64(rotation), false), &[]);
44+
network_interface.set_input(&InputConnector::node(*node_id, ScaleInput::INDEX), NodeInput::value(TaggedValue::DVec2(scale), false), &[]);
45+
network_interface.set_input(&InputConnector::node(*node_id, SkewInput::INDEX), NodeInput::value(TaggedValue::DVec2(shear), false), &[]);
4446
}
4547

4648
// TODO: This should be extracted from the graph at the location of the transform node.
@@ -74,14 +76,31 @@ impl LayerBounds {
7476

7577
/// Get the current affine transform from the transform node's inputs
7678
pub fn get_current_transform(inputs: &[NodeInput]) -> DAffine2 {
77-
let translation = if let Some(&TaggedValue::DVec2(translation)) = inputs[1].as_value() {
79+
const TRANSLATION_INDEX: usize = 1;
80+
const ROTATION_INDEX: usize = 2;
81+
const SCALE_INDEX: usize = 3;
82+
const SKEW_INDEX: usize = 4;
83+
84+
let translation = if let Some(&TaggedValue::DVec2(translation)) = inputs[TRANSLATION_INDEX].as_value() {
7885
translation
7986
} else {
8087
DVec2::ZERO
8188
};
82-
let rotation = if let Some(&TaggedValue::F64(rotation)) = inputs[2].as_value() { rotation } else { 0. };
83-
let scale = if let Some(&TaggedValue::DVec2(scale)) = inputs[3].as_value() { scale } else { DVec2::ONE };
84-
let shear = if let Some(&TaggedValue::DVec2(shear)) = inputs[4].as_value() { shear } else { DVec2::ZERO };
89+
let rotation = if let Some(&TaggedValue::F64(rotation)) = inputs[ROTATION_INDEX].as_value() {
90+
rotation
91+
} else {
92+
0.
93+
};
94+
let scale = if let Some(&TaggedValue::DVec2(scale)) = inputs[SCALE_INDEX].as_value() {
95+
scale
96+
} else {
97+
DVec2::ONE
98+
};
99+
let shear = if let Some(&TaggedValue::DVec2(shear)) = inputs[SKEW_INDEX].as_value() {
100+
shear
101+
} else {
102+
DVec2::ZERO
103+
};
85104

86105
let rotation = rotation.to_radians();
87106
let shear = DVec2::new(shear.x.to_radians().tan(), shear.y.to_radians().tan());
@@ -91,7 +110,13 @@ pub fn get_current_transform(inputs: &[NodeInput]) -> DAffine2 {
91110

92111
/// Extract the current normalized pivot from the layer
93112
pub fn get_current_normalized_pivot(inputs: &[NodeInput]) -> DVec2 {
94-
if let Some(&TaggedValue::DVec2(pivot)) = inputs[5].as_value() { pivot } else { DVec2::splat(0.5) }
113+
const ORIGIN_OFFSET_INDEX: usize = 5;
114+
115+
if let Some(&TaggedValue::DVec2(pivot)) = inputs[ORIGIN_OFFSET_INDEX].as_value() {
116+
pivot
117+
} else {
118+
DVec2::splat(0.5)
119+
}
95120
}
96121

97122
/// Expand a bounds to avoid div zero errors

editor/src/messages/portfolio/document/graph_operation/utility_types.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -367,23 +367,23 @@ impl<'a> ModifyInputsContext<'a> {
367367
let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else {
368368
return;
369369
};
370-
let input_connector = InputConnector::node(blend_node_id, 1);
370+
let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::BlendModeInput::INDEX);
371371
self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::BlendMode(blend_mode), false), false);
372372
}
373373

374374
pub fn opacity_set(&mut self, opacity: f64) {
375375
let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else {
376376
return;
377377
};
378-
let input_connector = InputConnector::node(blend_node_id, 2);
378+
let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::OpacityInput::INDEX);
379379
self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::F64(opacity * 100.), false), false);
380380
}
381381

382382
pub fn blending_fill_set(&mut self, fill: f64) {
383383
let Some(blend_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else {
384384
return;
385385
};
386-
let input_connector = InputConnector::node(blend_node_id, 3);
386+
let input_connector = InputConnector::node(blend_node_id, graphene_std::blending_nodes::blending::FillInput::INDEX);
387387
self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::F64(fill * 100.), false), false);
388388
}
389389

@@ -392,7 +392,7 @@ impl<'a> ModifyInputsContext<'a> {
392392
let Some(clip_node_id) = self.existing_proto_node_id(graphene_std::blending_nodes::blending::IDENTIFIER, true) else {
393393
return;
394394
};
395-
let input_connector = InputConnector::node(clip_node_id, 4);
395+
let input_connector = InputConnector::node(clip_node_id, graphene_std::blending_nodes::blending::ClipInput::INDEX);
396396
self.set_input_with_refresh(input_connector, NodeInput::value(TaggedValue::Bool(clip), false), false);
397397
}
398398

editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::messages::tool::common_functionality::shapes::shape_utility::{extract
1111
use glam::{DAffine2, DVec2};
1212
use graph_craft::document::NodeInput;
1313
use graph_craft::document::value::TaggedValue;
14+
use graphene_std::NodeInputDecleration;
1415
use std::collections::VecDeque;
1516
use std::f64::consts::FRAC_PI_2;
1617

@@ -165,7 +166,7 @@ impl RadiusHandle {
165166
self.previous_mouse_position = input.mouse.position;
166167

167168
responses.add(NodeGraphMessage::SetInput {
168-
input_connector: InputConnector::node(node_id, 1),
169+
input_connector: InputConnector::node(node_id, graphene_std::vector::generator_nodes::circle::RadiusInput::INDEX),
169170
input: NodeInput::value(TaggedValue::F64(current_radius + net_delta), false),
170171
});
171172
responses.add(NodeGraphMessage::RunDocumentGraph);

editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/number_of_points_dial.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use crate::messages::tool::common_functionality::shapes::shape_utility::{extract
1313
use glam::{DAffine2, DVec2};
1414
use graph_craft::document::NodeInput;
1515
use graph_craft::document::value::TaggedValue;
16+
use graphene_std::NodeInputDecleration;
1617
use std::collections::VecDeque;
1718
use std::f64::consts::TAU;
1819

@@ -201,7 +202,7 @@ impl NumberOfPointsDial {
201202
let new_point_count = ((self.initial_points as i32) + (net_delta as i32)).max(3);
202203

203204
responses.add(NodeGraphMessage::SetInput {
204-
input_connector: InputConnector::node(node_id, 1),
205+
input_connector: InputConnector::node(node_id, graphene_std::vector::generator_nodes::star::SidesInput::<u32>::INDEX),
205206
input: NodeInput::value(TaggedValue::U32(new_point_count as u32), false),
206207
});
207208
responses.add(NodeGraphMessage::RunDocumentGraph);

editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/sweep_angle_gizmo.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
1111
use glam::DVec2;
1212
use graph_craft::document::value::TaggedValue;
1313
use graph_craft::document::{NodeId, NodeInput};
14+
use graphene_std::NodeInputDecleration;
15+
use graphene_std::vector::generator_nodes::arc::*;
1416
use std::collections::VecDeque;
1517
use std::f64::consts::FRAC_PI_4;
1618

@@ -332,11 +334,11 @@ impl SweepAngleGizmo {
332334
self.snap_angles = Self::calculate_snap_angles();
333335

334336
responses.add(NodeGraphMessage::SetInput {
335-
input_connector: InputConnector::node(node_id, 2),
337+
input_connector: InputConnector::node(node_id, StartAngleInput::INDEX),
336338
input: NodeInput::value(TaggedValue::F64(start_angle), false),
337339
});
338340
responses.add(NodeGraphMessage::SetInput {
339-
input_connector: InputConnector::node(node_id, 3),
341+
input_connector: InputConnector::node(node_id, SweepAngleInput::INDEX),
340342
input: NodeInput::value(TaggedValue::F64(sweep_angle), false),
341343
});
342344

editor/src/messages/tool/common_functionality/shapes/arc_shape.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
1212
use glam::DAffine2;
1313
use graph_craft::document::NodeInput;
1414
use graph_craft::document::value::TaggedValue;
15+
use graphene_std::NodeInputDecleration;
16+
use graphene_std::vector::generator_nodes::arc::*;
1517
use graphene_std::vector::misc::ArcType;
1618
use std::collections::VecDeque;
1719

@@ -172,7 +174,7 @@ impl Arc {
172174
}
173175

174176
responses.add(NodeGraphMessage::SetInput {
175-
input_connector: InputConnector::node(node_id, 1),
177+
input_connector: InputConnector::node(node_id, RadiusInput::INDEX),
176178
input: NodeInput::value(TaggedValue::F64(radius), false),
177179
});
178180

editor/src/messages/tool/common_functionality/shapes/arrow_shape.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ use crate::messages::tool::common_functionality::graph_modification_utils;
99
use glam::DVec2;
1010
use graph_craft::document::NodeInput;
1111
use graph_craft::document::value::TaggedValue;
12+
use graphene_std::NodeInputDecleration;
13+
use graphene_std::vector::generator_nodes::arrow::*;
1214
use std::collections::VecDeque;
1315

1416
#[derive(Default)]
@@ -58,11 +60,11 @@ impl Arrow {
5860

5961
// Update Arrow node start and end points with document space coordinates
6062
responses.add(NodeGraphMessage::SetInput {
61-
input_connector: InputConnector::node(node_id, 1),
63+
input_connector: InputConnector::node(node_id, StartInput::INDEX),
6264
input: NodeInput::value(TaggedValue::DVec2(start_document), false),
6365
});
6466
responses.add(NodeGraphMessage::SetInput {
65-
input_connector: InputConnector::node(node_id, 2),
67+
input_connector: InputConnector::node(node_id, EndInput::INDEX),
6668
input: NodeInput::value(TaggedValue::DVec2(end_document), false),
6769
});
6870

editor/src/messages/tool/common_functionality/shapes/circle_shape.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
1212
use glam::DAffine2;
1313
use graph_craft::document::NodeInput;
1414
use graph_craft::document::value::TaggedValue;
15+
use graphene_std::NodeInputDecleration;
1516

1617
#[derive(Clone, Debug, Default)]
1718
pub struct CircleGizmoHandler {
@@ -107,7 +108,7 @@ impl Circle {
107108
let radius: f64 = if dimensions.x > dimensions.y { dimensions.y / 2. } else { dimensions.x / 2. };
108109

109110
responses.add(NodeGraphMessage::SetInput {
110-
input_connector: InputConnector::node(node_id, 1),
111+
input_connector: InputConnector::node(node_id, graphene_std::vector::generator_nodes::circle::RadiusInput::INDEX),
111112
input: NodeInput::value(TaggedValue::F64(radius), false),
112113
});
113114

editor/src/messages/tool/common_functionality/shapes/ellipse_shape.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
99
use glam::DAffine2;
1010
use graph_craft::document::NodeInput;
1111
use graph_craft::document::value::TaggedValue;
12+
use graphene_std::NodeInputDecleration;
13+
use graphene_std::vector::generator_nodes::ellipse::*;
1214
use std::collections::VecDeque;
1315

1416
#[derive(Default)]
@@ -37,11 +39,11 @@ impl Ellipse {
3739
};
3840

3941
responses.add(NodeGraphMessage::SetInput {
40-
input_connector: InputConnector::node(node_id, 1),
42+
input_connector: InputConnector::node(node_id, RadiusXInput::INDEX),
4143
input: NodeInput::value(TaggedValue::F64(((start.x - end.x) / 2.).abs()), false),
4244
});
4345
responses.add(NodeGraphMessage::SetInput {
44-
input_connector: InputConnector::node(node_id, 2),
46+
input_connector: InputConnector::node(node_id, RadiusYInput::INDEX),
4547
input: NodeInput::value(TaggedValue::F64(((start.y - end.y) / 2.).abs()), false),
4648
});
4749
responses.add(GraphOperationMessage::TransformSet {

editor/src/messages/tool/common_functionality/shapes/line_shape.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use crate::messages::tool::tool_messages::tool_prelude::*;
1212
use glam::DVec2;
1313
use graph_craft::document::NodeInput;
1414
use graph_craft::document::value::TaggedValue;
15+
use graphene_std::NodeInputDecleration;
16+
use graphene_std::vector::generator_nodes::line::*;
1517
use std::collections::VecDeque;
1618

1719
#[derive(Clone, PartialEq, Debug, Default)]
@@ -73,11 +75,11 @@ impl Line {
7375
};
7476

7577
responses.add(NodeGraphMessage::SetInput {
76-
input_connector: InputConnector::node(node_id, 1),
78+
input_connector: InputConnector::node(node_id, StartInput::INDEX),
7779
input: NodeInput::value(TaggedValue::DVec2(document_points[0]), false),
7880
});
7981
responses.add(NodeGraphMessage::SetInput {
80-
input_connector: InputConnector::node(node_id, 2),
82+
input_connector: InputConnector::node(node_id, EndInput::INDEX),
8183
input: NodeInput::value(TaggedValue::DVec2(document_points[1]), false),
8284
});
8385
responses.add(NodeGraphMessage::RunDocumentGraph);

0 commit comments

Comments
 (0)