paint: fix brush nodes paste

This commit is contained in:
luboslenco
2026-05-18 18:53:21 +02:00
parent da8b0fadeb
commit 7c26692ffc
+15 -5
View File
@@ -71,6 +71,9 @@ logic_node_ext_t *parser_logic_create_node_instance(char *node_type, ui_node_t *
nodes_brush_init(); nodes_brush_init();
} }
logic_node_ext_t *(*create)(ui_node_t *, f32_array_t *) = any_map_get(nodes_brush_creates, node_type); logic_node_ext_t *(*create)(ui_node_t *, f32_array_t *) = any_map_get(nodes_brush_creates, node_type);
if (create == NULL) {
return NULL;
}
return create(raw, args); return create(raw, args);
} }
@@ -122,10 +125,13 @@ char *parser_logic_build_node(ui_node_t *node) {
return name; return name;
} }
any_array_push(parser_logic_parsed_nodes, name);
// Create node // Create node
logic_node_ext_t *v = parser_logic_create_node_instance(node->type, node, NULL); logic_node_ext_t *v = parser_logic_create_node_instance(node->type, node, NULL);
if (v == NULL) {
return NULL;
}
any_array_push(parser_logic_parsed_nodes, name);
any_map_set(parser_logic_node_map, name, v); any_map_set(parser_logic_node_map, name, v);
// Create inputs // Create inputs
@@ -138,8 +144,10 @@ char *parser_logic_build_node(ui_node_t *node) {
if (l != NULL) { if (l != NULL) {
ui_node_t *n = parser_logic_get_node(l->from_id); ui_node_t *n = parser_logic_get_node(l->from_id);
char *s = parser_logic_build_node(n); char *s = parser_logic_build_node(n);
inp_node = any_map_get(parser_logic_node_map, s); if (s != NULL) {
inp_from = l->from_socket; inp_node = any_map_get(parser_logic_node_map, s);
inp_from = l->from_socket;
}
} }
// Not linked - create node with default values // Not linked - create node with default values
else { else {
@@ -160,7 +168,9 @@ char *parser_logic_build_node(ui_node_t *node) {
ui_node_link_t *l = ls->buffer[i]; ui_node_link_t *l = ls->buffer[i];
ui_node_t *n = parser_logic_get_node(l->to_id); ui_node_t *n = parser_logic_get_node(l->to_id);
char *out_name = parser_logic_build_node(n); char *out_name = parser_logic_build_node(n);
any_array_push(out_nodes, any_map_get(parser_logic_node_map, out_name)); if (out_name != NULL) {
any_array_push(out_nodes, any_map_get(parser_logic_node_map, out_name));
}
} }
} }
// Not linked - create node with default values // Not linked - create node with default values