[Bf-blender-cvs] [84959e1e6a9] builtin-simulation-nodes: define input and output link limit on socket type
Jacques Lucke
noreply at git.blender.org
Mon Mar 2 17:24:09 CET 2020
Commit: 84959e1e6a967c46380790790b7f9ebe2af034ad
Author: Jacques Lucke
Date: Mon Mar 2 17:05:47 2020 +0100
Branches: builtin-simulation-nodes
https://developer.blender.org/rB84959e1e6a967c46380790790b7f9ebe2af034ad
define input and output link limit on socket type
===================================================================
M source/blender/blenkernel/BKE_node.h
M source/blender/blenkernel/intern/node.c
M source/blender/makesrna/intern/rna_nodetree.c
M source/blender/nodes/intern/node_socket.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 9385da7eacb..a2143113d07 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -89,7 +89,8 @@ struct uiLayout;
* in RNA types automatically.
*/
typedef struct bNodeSocketTemplate {
- int type, limit;
+ int type;
+ int limit; /* unused */
char name[64]; /* MAX_NAME */
float val1, val2, val3, val4; /* default alloc value for inputs */
float min, max;
@@ -147,6 +148,9 @@ typedef struct bNodeSocketType {
int type, subtype;
int display_shape_default;
+ int input_link_limit;
+ int output_link_limit;
+
/* Callback to free the socket type. */
void (*free_self)(struct bNodeSocketType *stype);
} bNodeSocketType;
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 03e734a84bb..70fdc689a45 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -218,6 +218,8 @@ static void node_socket_set_typeinfo(bNodeTree *ntree,
/* deprecated integer type */
sock->type = typeinfo->type;
sock->display_shape = typeinfo->display_shape_default;
+ sock->limit = (sock->in_out == SOCK_IN) ? typeinfo->input_link_limit :
+ typeinfo->output_link_limit;
if (sock->default_value == NULL) {
/* initialize the default_value pointer used by standard socket types */
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index d6ff3833f56..274cf639de3 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -2225,6 +2225,8 @@ static StructRNA *rna_NodeSocket_register(Main *UNUSED(bmain),
}
st->free_self = (void (*)(bNodeSocketType * stype)) MEM_freeN;
+ st->input_link_limit = 1;
+ st->output_link_limit = 0xFFF;
/* if RNA type is already registered, unregister first */
if (st->ext_socket.srna) {
@@ -2541,6 +2543,8 @@ static StructRNA *rna_NodeSocketInterface_register(Main *UNUSED(bmain),
}
st->free_self = (void (*)(bNodeSocketType * stype)) MEM_freeN;
+ st->input_link_limit = 1;
+ st->output_link_limit = 0xFFF;
/* if RNA type is already registered, unregister first */
if (st->ext_interface.srna) {
diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c
index fdabbeb1091..8b4e38e9d85 100644
--- a/source/blender/nodes/intern/node_socket.c
+++ b/source/blender/nodes/intern/node_socket.c
@@ -48,7 +48,6 @@ struct bNodeSocket *node_add_socket_from_template(struct bNodeTree *ntree,
ntree, node, in_out, stemp->type, stemp->subtype, stemp->identifier, stemp->name);
sock->flag |= stemp->flag;
- sock->limit = stemp->limit;
/* initialize default_value */
switch (stemp->type) {
@@ -431,6 +430,9 @@ static bNodeSocketType *make_standard_socket_type(int type, int subtype)
stype->interface_from_socket = standard_node_socket_interface_from_socket;
stype->interface_verify_socket = standard_node_socket_interface_verify_socket;
+ stype->input_link_limit = 1;
+ stype->output_link_limit = 0xFFF;
+
return stype;
}
@@ -438,6 +440,7 @@ static bNodeSocketType *make_socket_type_effector(int type)
{
bNodeSocketType *stype = make_standard_socket_type(type, PROP_NONE);
stype->display_shape_default = SOCK_DISPLAY_SHAPE_DIAMOND;
+ stype->input_link_limit = 0xFFF;
return stype;
}
@@ -472,6 +475,9 @@ static bNodeSocketType *make_socket_type_virtual(void)
ED_init_node_socket_type_virtual(stype);
+ stype->input_link_limit = 1;
+ stype->output_link_limit = 1;
+
return stype;
}
More information about the Bf-blender-cvs
mailing list