From 57bf2f873ef9ffdd13207ed1111093bd8aade8a3 Mon Sep 17 00:00:00 2001 From: James Lindsay <78500760+0HyperCube@users.noreply.github.com> Date: Sat, 7 Jun 2025 16:11:34 +0100 Subject: [PATCH] Temporarily fix the Pen/Freehand/Spline tools by making vector modify apply to row 1 only (#2700) --- .../gcore/src/vector/vector_data/modification.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/node-graph/gcore/src/vector/vector_data/modification.rs b/node-graph/gcore/src/vector/vector_data/modification.rs index 8a13caf8..adafe48a 100644 --- a/node-graph/gcore/src/vector/vector_data/modification.rs +++ b/node-graph/gcore/src/vector/vector_data/modification.rs @@ -1,5 +1,6 @@ use super::*; use crate::Ctx; +use crate::instances::Instance; use crate::uuid::generate_uuid; use bezier_rs::BezierHandles; use core::hash::BuildHasher; @@ -424,8 +425,13 @@ impl core::hash::Hash for VectorModification { /// A node that applies a procedural modification to some [`VectorData`]. #[node_macro::node(category(""))] async fn path_modify(_ctx: impl Ctx, mut vector_data: VectorDataTable, modification: Box) -> VectorDataTable { - for vector_data_instance in vector_data.instance_mut_iter() { - modification.apply(vector_data_instance.instance); + if vector_data.is_empty() { + vector_data.push(Instance::default()); + } + let vector_data_instance = vector_data.get_mut(0).expect("push should give one item"); + modification.apply(vector_data_instance.instance); + if vector_data.len() > 1 { + warn!("The path modify ran on {} instances of vector data. Only the first can be modified.", vector_data.len()); } vector_data }