Commit: 4f02817367d435b5d0f7b95940c55c91449e86a9 Author: Jacques Lucke Date: Wed Nov 23 13:48:53 2022 +0100 Branches: master https://developer.blender.org/rB4f02817367d435b5d0f7b95940c55c91449e86a9
Nodes: remove bNodeTree->interface_type This is not used for anything in practice currently. The original intention was probably to generate different socket subtypes, but that is solved differently now (e.g. using `NodeSocketFloatDistance`). It's possible that an addon tried to use this but it's rather unlikely. Differential Revision: https://developer.blender.org/D13188 =================================================================== M source/blender/blenkernel/BKE_node.h M source/blender/blenkernel/intern/node.cc M source/blender/blenkernel/intern/node_tree_update.cc M source/blender/makesdna/DNA_node_types.h M source/blender/makesrna/intern/rna_nodetree.c =================================================================== diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index d4e37e29505..a22df9cc673 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -171,9 +171,6 @@ typedef struct bNodeSocketType { void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr); void (*interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color); - void (*interface_register_properties)(struct bNodeTree *ntree, - struct bNodeSocket *interface_socket, - struct StructRNA *data_srna); void (*interface_init_socket)(struct bNodeTree *ntree, const struct bNodeSocket *interface_socket, struct bNode *node, @@ -583,10 +580,6 @@ struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree struct bNodeSocket *from_sock); void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock); -struct StructRNA *ntreeInterfaceTypeGet(struct bNodeTree *ntree, bool create); -void ntreeInterfaceTypeFree(struct bNodeTree *ntree); -void ntreeInterfaceTypeUpdate(struct bNodeTree *ntree); - /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index e17c5e31a46..2dde8ccba39 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -203,8 +203,6 @@ static void ntree_copy_data(Main * /*bmain*/, ID *id_dst, const ID *id_src, cons new_node->parent = node_map.lookup(new_node->parent); } } - /* node tree will generate its own interface type */ - ntree_dst->interface_type = nullptr; if (ntree_src->runtime->field_inferencing_interface) { ntree_dst->runtime->field_inferencing_interface = std::make_unique<FieldInferencingInterface>( @@ -242,9 +240,6 @@ static void ntree_free_data(ID *id) /* XXX not nice, but needed to free localized node groups properly */ free_localized_node_groups(ntree); - /* Unregister associated RNA types. */ - ntreeInterfaceTypeFree(ntree); - BLI_freelistN(&ntree->links); LISTBASE_FOREACH_MUTABLE (bNode *, node, &ntree->nodes) { @@ -622,7 +617,6 @@ static void ntree_blend_write(BlendWriter *writer, ID *id, const void *id_addres /* Clean up, important in undo case to reduce false detection of changed datablocks. */ ntree->is_updating = false; ntree->typeinfo = nullptr; - ntree->interface_type = nullptr; ntree->progress = nullptr; ntree->execdata = nullptr; @@ -676,7 +670,6 @@ void ntreeBlendReadData(BlendDataReader *reader, ID *owner_id, bNodeTree *ntree) /* NOTE: writing and reading goes in sync, for speed. */ ntree->is_updating = false; ntree->typeinfo = nullptr; - ntree->interface_type = nullptr; ntree->progress = nullptr; ntree->execdata = nullptr; @@ -3442,127 +3435,6 @@ void ntreeRemoveSocketInterface(bNodeTree *ntree, bNodeSocket *sock) BKE_ntree_update_tag_interface(ntree); } -/* generates a valid RNA identifier from the node tree name */ -static void ntree_interface_identifier_base(bNodeTree *ntree, char *base) -{ - /* generate a valid RNA identifier */ - BLI_sprintf(base, "NodeTreeInterface_%s", ntree->id.name + 2); - RNA_identifier_sanitize(base, false); -} - -/* check if the identifier is already in use */ -static bool ntree_interface_unique_identifier_check(void * /*data*/, const char *identifier) -{ - return (RNA_struct_find(identifier) != nullptr); -} - -/* generates the actual unique identifier and ui name and description */ -static void ntree_interface_identifier(bNodeTree *ntree, - const char *base, - char *identifier, - int maxlen, - char *name, - char *description) -{ - /* There is a possibility that different node tree names get mapped to the same identifier - * after sanitation (e.g. "SomeGroup_A", "SomeGroup.A" both get sanitized to "SomeGroup_A"). - * On top of the sanitized id string add a number suffix if necessary to avoid duplicates. - */ - identifier[0] = '\0'; - BLI_uniquename_cb( - ntree_interface_unique_identifier_check, nullptr, base, '_', identifier, maxlen); - - BLI_sprintf(name, "Node Tree %s Interface", ntree->id.name + 2); - BLI_sprintf(description, "Interface properties of node group %s", ntree->id.name + 2); -} - -static void ntree_interface_type_create(bNodeTree *ntree) -{ - /* strings are generated from base string + ID name, sizes are sufficient */ - char base[MAX_ID_NAME + 64], identifier[MAX_ID_NAME + 64], name[MAX_ID_NAME + 64], - description[MAX_ID_NAME + 64]; - - /* generate a valid RNA identifier */ - ntree_interface_identifier_base(ntree, base); - ntree_interface_identifier(ntree, base, identifier, sizeof(identifier), name, description); - - /* register a subtype of PropertyGroup */ - StructRNA *srna = RNA_def_struct_ptr(&BLENDER_RNA, identifier, &RNA_PropertyGroup); - RNA_def_struct_ui_text(srna, name, description); - RNA_def_struct_duplicate_pointers(&BLENDER_RNA, srna); - - /* associate the RNA type with the node tree */ - ntree->interface_type = srna; - RNA_struct_blender_type_set(srna, ntree); - - /* add socket properties */ - LISTBASE_FOREACH (bNodeSocket *, sock, &ntree->inputs) { - bNodeSocketType *stype = sock->typeinfo; - if (stype && stype->interface_register_properties) { - stype->interface_register_properties(ntree, sock, srna); - } - } - LISTBASE_FOREACH (bNodeSocket *, sock, &ntree->outputs) { - bNodeSocketType *stype = sock->typeinfo; - if (stype && stype->interface_register_properties) { - stype->interface_register_properties(ntree, sock, srna); - } - } -} - -StructRNA *ntreeInterfaceTypeGet(bNodeTree *ntree, bool create) -{ - if (ntree->interface_type) { - /* strings are generated from base string + ID name, sizes are sufficient */ - char base[MAX_ID_NAME + 64], identifier[MAX_ID_NAME + 64], name[MAX_ID_NAME + 64], - description[MAX_ID_NAME + 64]; - - /* A bit of a hack: when changing the ID name, update the RNA type identifier too, - * so that the names match. This is not strictly necessary to keep it working, - * but better for identifying associated NodeTree blocks and RNA types. - */ - StructRNA *srna = ntree->interface_type; - - ntree_interface_identifier_base(ntree, base); - - /* RNA identifier may have a number suffix, but should start with the idbase string */ - if (!STREQLEN(RNA_struct_identifier(srna), base, sizeof(base))) { - /* generate new unique RNA identifier from the ID name */ - ntree_interface_identifier(ntree, base, identifier, sizeof(identifier), name, description); - - /* rename the RNA type */ - RNA_def_struct_free_pointers(&BLENDER_RNA, srna); - RNA_def_struct_identifier(&BLENDER_RNA, srna, identifier); - RNA_def_struct_ui_text(srna, name, description); - RNA_def_struct_duplicate_pointers(&BLENDER_RNA, srna); - } - } - else if (create) { - ntree_interface_type_create(ntree); - } - - return ntree->interface_type; -} - -void ntreeInterfaceTypeFree(bNodeTree *ntree) -{ - if (ntree->interface_type) { - RNA_struct_free(&BLENDER_RNA, ntree->interface_type); - ntree->interface_type = nullptr; - } -} - -void ntreeInterfaceTypeUpdate(bNodeTree *ntree) -{ - /* XXX it would be sufficient to just recreate all properties - * instead of re-registering the whole struct type, - * but there is currently no good way to do this in the RNA functions. - * Overhead should be negligible. - */ - ntreeInterfaceTypeFree(ntree); - ntree_interface_type_create(ntree); -} - /* ************ find stuff *************** */ bNode *ntreeFindType(const bNodeTree *ntree, int type) diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc index f204e8fbddc..09b8bcd1d93 100644 --- a/source/blender/blenkernel/intern/node_tree_update.cc +++ b/source/blender/blenkernel/intern/node_tree_update.cc @@ -1009,10 +1009,6 @@ class NodeTreeMainUpdater { result.interface_changed = true; } - if (result.interface_changed) { - ntreeInterfaceTypeUpdate(&ntree); - } - return result; } diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 2831e488322..ec765b0a3bb 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -495,9 +495,6 @@ typedef struct bNodeTree { /** Runtime type identifier. */ char idname[64]; - /** Runtime RNA type of the group interface. */ - struct StructRNA *interface_type; - /** Grease pencil data. */ struct bGPdata *gpd; /** Node tree stores own offset for consistent editor view. */ diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index b33e5543219..4a0094831b9 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -2935,31 +2935,6 @@ static void rna_NodeSocketInterface_draw_color(bContext *C, PointerRNA *ptr, flo RNA_parameter_list_free(&list); } -static void rna_NodeSocketInterface_register_properties(bNodeTree *ntree, - bNodeSocket *stemp, - StructRNA *data_srna) -{ - extern FunctionRNA rna_NodeSocketInterface_register_properties_func; - - PointerRNA ptr; - ParameterList list; - FunctionRNA *func; - - if (!stemp->typeinfo) { - return; - } - - RNA_pointer_create((ID *)ntree, &RNA_NodeSocketInterface, stemp, &ptr); - // RNA_struct_find_function(&ptr, "register_properties"); - func = &rna_NodeSocketInterface_register_properties_func; - - RNA_parameter_list_create(&list, &ptr, func); - @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs