[Bf-blender-cvs] [4f02817367d] master: Nodes: remove bNodeTree->interface_type
Jacques Lucke
noreply at git.blender.org
Wed Nov 23 13:52:44 CET 2022
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. @@
More information about the Bf-blender-cvs
mailing list