Skip to content

Commit 02afd08

Browse files
committed
Fix 'Scatter Points' node double transformation of points and remove segments connecting the points
1 parent 504af4e commit 02afd08

File tree

4 files changed

+13
-18
lines changed

4 files changed

+13
-18
lines changed

editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
316316
DocumentNodeMetadata {
317317
persistent_metadata: DocumentNodePersistentMetadata {
318318
display_name: "Layer".to_string(),
319-
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(1, -3)),
319+
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(0, -3)),
320320
..Default::default()
321321
},
322322
..Default::default()
@@ -333,7 +333,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
333333
..Default::default()
334334
},
335335
},
336-
description: Cow::Borrowed("The Merge node combines graphical data through composition."),
336+
description: Cow::Borrowed("Merge attaches a layer to the stack's group."),
337337
properties: None,
338338
},
339339
DocumentNodeDefinition {
@@ -429,23 +429,23 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
429429
DocumentNodeMetadata {
430430
persistent_metadata: DocumentNodePersistentMetadata {
431431
display_name: "To Artboard".to_string(),
432-
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(-10, -3)),
432+
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(-14, -3)),
433433
..Default::default()
434434
},
435435
..Default::default()
436436
},
437437
DocumentNodeMetadata {
438438
persistent_metadata: DocumentNodePersistentMetadata {
439439
display_name: "Monitor".to_string(),
440-
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(-2, -3)),
440+
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(-7, -3)),
441441
..Default::default()
442442
},
443443
..Default::default()
444444
},
445445
DocumentNodeMetadata {
446446
persistent_metadata: DocumentNodePersistentMetadata {
447447
display_name: "Append Artboards".to_string(),
448-
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(6, -4)),
448+
node_type_metadata: NodeTypePersistentMetadata::node(IVec2::new(0, -4)),
449449
..Default::default()
450450
},
451451
..Default::default()

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,7 +1076,6 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
10761076
}
10771077

10781078
if reference == "Sample Points" && inputs_count == 5 {
1079-
// TODO: Rename to "Sample Polyline", also remove segment generation from "Scatter Points"
10801079
let node_definition = resolve_document_node_type("Sample Polyline").unwrap();
10811080
let new_node_template = node_definition.default_node_template();
10821081
let document_node = new_node_template.document_node;
@@ -1096,7 +1095,6 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
10961095
document.network_interface.set_input(&InputConnector::node(*node_id, 5), old_inputs[3].clone(), network_path);
10971096
document.network_interface.set_input(&InputConnector::node(*node_id, 6), old_inputs[4].clone(), network_path);
10981097

1099-
// TODO: Rename to "Sample Polyline", also remove segment generation from "Scatter Points"
11001098
document.network_interface.replace_reference_name(node_id, network_path, "Sample Polyline".to_string());
11011099
}
11021100
}

node-graph/gcore/src/graphic_element.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,12 @@ pub fn migrate_artboard_group<'de, D: serde::Deserializer<'de>>(deserializer: D)
340340
pub type ArtboardGroupTable = Instances<Artboard>;
341341

342342
#[node_macro::node(category(""))]
343-
async fn layer(_: impl Ctx, mut stack: GraphicGroupTable, element: GraphicElement, node_path: Vec<NodeId>) -> GraphicGroupTable {
343+
async fn layer<I: 'n + Send + Clone>(
344+
_: impl Ctx,
345+
#[implementations(GraphicGroupTable, VectorDataTable, RasterDataTable<CPU>, RasterDataTable<GPU>)] mut stack: Instances<I>,
346+
#[implementations(GraphicElement, VectorData, Raster<CPU>, Raster<GPU>)] element: I,
347+
node_path: Vec<NodeId>,
348+
) -> Instances<I> {
344349
// Get the penultimate element of the node path, or None if the path is too short
345350
let source_node_id = node_path.get(node_path.len().wrapping_sub(2)).copied();
346351

node-graph/gcore/src/vector/vector_nodes.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::raster_types::{CPU, GPU, RasterDataTable};
99
use crate::registry::types::{Angle, Fraction, IntegerCount, Length, Multiplier, Percentage, PixelLength, PixelSize, SeedValue};
1010
use crate::renderer::GraphicElementRendered;
1111
use crate::transform::{Footprint, ReferencePoint, Transform};
12-
use crate::vector::misc::{MergeByDistanceAlgorithm, PointSpacingType, dvec2_to_point};
12+
use crate::vector::misc::{MergeByDistanceAlgorithm, PointSpacingType};
1313
use crate::vector::style::{PaintOrder, StrokeAlign, StrokeCap, StrokeJoin};
1414
use crate::vector::{FillId, PointDomain, RegionId};
1515
use crate::{CloneVarArgs, Color, Context, Ctx, ExtractAll, GraphicElement, GraphicGroupTable, OwnedContextImpl};
@@ -1413,7 +1413,6 @@ async fn poisson_disk_points(
14131413
.stroke_bezpath_iter()
14141414
.map(|mut bezpath| {
14151415
// TODO: apply transform to points instead of modifying the paths
1416-
bezpath.apply_affine(Affine::new(vector_data_instance.transform.to_cols_array()));
14171416
bezpath.close_path();
14181417
let bbox = bezpath.bounding_box();
14191418
(bezpath, bbox)
@@ -1425,16 +1424,9 @@ async fn poisson_disk_points(
14251424
continue;
14261425
}
14271426

1428-
let mut poisson_disk_bezpath = BezPath::new();
1429-
14301427
for point in bezpath_algorithms::poisson_disk_points(i, &path_with_bounding_boxes, separation_disk_diameter, || rng.random::<f64>()) {
1431-
if poisson_disk_bezpath.elements().is_empty() {
1432-
poisson_disk_bezpath.move_to(dvec2_to_point(point));
1433-
} else {
1434-
poisson_disk_bezpath.line_to(dvec2_to_point(point));
1435-
}
1428+
result.point_domain.push(PointId::generate(), point);
14361429
}
1437-
result.append_bezpath(poisson_disk_bezpath);
14381430
}
14391431

14401432
// Transfer the style from the input vector data to the result.

0 commit comments

Comments
 (0)