This commit is contained in:
indierusty
2025-06-26 14:30:40 +05:30
parent 4c6e5da2a8
commit db141046a3
3 changed files with 6 additions and 5 deletions
@@ -1481,7 +1481,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
..Default::default() ..Default::default()
}, },
DocumentNode { DocumentNode {
inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::network(concrete!(graphene_std::vector::VectorTableModification), 1)], inputs: vec![NodeInput::node(NodeId(0), 0), NodeInput::network(concrete!(graphene_std::vector::VectorDataInstancesModification), 1)],
manual_composition: Some(generic!(T)), manual_composition: Some(generic!(T)),
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::vector::vector_data::modification::PathModifyNode")), implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::vector::vector_data::modification::PathModifyNode")),
..Default::default() ..Default::default()
@@ -1495,7 +1495,7 @@ fn static_nodes() -> Vec<DocumentNodeDefinition> {
}), }),
inputs: vec![ inputs: vec![
NodeInput::value(TaggedValue::VectorData(VectorDataTable::default()), true), NodeInput::value(TaggedValue::VectorData(VectorDataTable::default()), true),
NodeInput::value(TaggedValue::VectorModification(Default::default()), false), NodeInput::value(TaggedValue::VectorDataInstancesModification(Default::default()), false),
], ],
..Default::default() ..Default::default()
}, },
@@ -418,11 +418,11 @@ impl Hash for VectorModification {
} }
} }
pub type VectorTableModification = HashMap<usize, VectorModification>; pub type VectorDataInstancesModification = HashMap<usize, VectorModification>;
/// A node that applies a procedural modification to some [`VectorData`]. /// A node that applies a procedural modification to some [`VectorData`].
#[node_macro::node(category(""))] #[node_macro::node(category(""))]
async fn path_modify(_ctx: impl Ctx, mut vector_data: VectorDataTable, modification: VectorTableModification) -> VectorDataTable { async fn path_modify(_ctx: impl Ctx, mut vector_data: VectorDataTable, modification: VectorDataInstancesModification) -> VectorDataTable {
for (index, vector_data_instance) in vector_data.instance_mut_iter().enumerate() { for (index, vector_data_instance) in vector_data.instance_mut_iter().enumerate() {
if let Some(vector_modification) = modification.get(&index) { if let Some(vector_modification) = modification.get(&index) {
vector_modification.apply(vector_data_instance.instance); vector_modification.apply(vector_data_instance.instance);
+2 -1
View File
@@ -11,6 +11,7 @@ use graphene_core::raster_types::CPU;
use graphene_core::renderer::RenderMetadata; use graphene_core::renderer::RenderMetadata;
use graphene_core::transform::ReferencePoint; use graphene_core::transform::ReferencePoint;
use graphene_core::uuid::NodeId; use graphene_core::uuid::NodeId;
use graphene_core::vector::VectorDataInstancesModification;
use graphene_core::vector::style::Fill; use graphene_core::vector::style::Fill;
use graphene_core::{Color, MemoHash, Node, Type}; use graphene_core::{Color, MemoHash, Node, Type};
use std::fmt::Display; use std::fmt::Display;
@@ -214,7 +215,7 @@ tagged_value! {
DocumentNode(DocumentNode), DocumentNode(DocumentNode),
Curve(graphene_core::raster::curve::Curve), Curve(graphene_core::raster::curve::Curve),
Footprint(graphene_core::transform::Footprint), Footprint(graphene_core::transform::Footprint),
VectorModification(Box<graphene_core::vector::VectorModification>), VectorDataInstancesModification(VectorDataInstancesModification),
FontCache(Arc<graphene_core::text::FontCache>), FontCache(Arc<graphene_core::text::FontCache>),
// ========== // ==========
// ENUM TYPES // ENUM TYPES