diff --git a/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs b/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs index af8f6bd130..8ca78e9376 100644 --- a/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs +++ b/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs @@ -1481,7 +1481,7 @@ fn static_nodes() -> Vec { ..Default::default() }, DocumentNode { - inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::network(concrete!(graphene_std::vector::VectorModification), 1)], + inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::network(concrete!(graphene_std::vector::VectorTableModification), 1)], manual_composition: Some(generic!(T)), implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::vector::vector_data::modification::PathModifyNode")), ..Default::default() diff --git a/node-graph/gcore/src/vector/vector_data/modification.rs b/node-graph/gcore/src/vector/vector_data/modification.rs index 15ed28b638..8751803aa8 100644 --- a/node-graph/gcore/src/vector/vector_data/modification.rs +++ b/node-graph/gcore/src/vector/vector_data/modification.rs @@ -418,16 +418,14 @@ impl Hash for VectorModification { } } +pub type VectorTableModification = Vec; + /// 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 { - 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()); +async fn path_modify(_ctx: impl Ctx, mut vector_data: VectorDataTable, modification: VectorTableModification) -> VectorDataTable { + for (index, instance) in vector_data.instance_mut_iter().enumerate() { + let instance_modification = &modification[index]; + instance_modification.apply(instance.instance); } vector_data }