Nodes: add socket option to hide the default value in the UI, to be used for
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 7 Nov 2011 17:30:52 +0000 (17:30 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 7 Nov 2011 17:30:52 +0000 (17:30 +0000)
sockets that get their default value if no node is connected from elsewhere,
e.g. a texture coordinate.

source/blender/blenkernel/BKE_node.h
source/blender/editors/space_node/node_draw.c
source/blender/nodes/intern/node_socket.c
source/blender/nodes/shader/nodes/node_shader_texture.c

index 278e57125c5be0910fd09f761f864285f681f3e3..6080981dc32772917c49b91c85d554389cd5dd32 100644 (file)
@@ -83,6 +83,7 @@ typedef struct bNodeSocketTemplate {
        float val1, val2, val3, val4;   /* default alloc value for inputs */
        float min, max;
        PropertySubType subtype;
+       int flag;
        
        /* after this line is used internal only */
        struct bNodeSocket *sock;               /* used to hold verified socket */
index c2a2f319c28c31dc88cfc8d7c319f5b7a9957cde..a932f1b10d98ffd32109e7e19a9763196ba3ca96 100644 (file)
@@ -108,7 +108,8 @@ void ED_node_changed_update(ID *id, bNode *node)
                        WM_main_add_notifier(NC_WORLD|ND_WORLD_DRAW, id);
        }
        else if(treetype==NTREE_COMPOSIT) {
-               nodeUpdate(edittree, node);
+               if(node)
+                       nodeUpdate(edittree, node);
                /* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */
                        
                node= node_tree_get_editgroup(nodetree);
@@ -691,7 +692,7 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN
                
                node_socket_circle_draw(ntree, sock, NODE_SOCKSIZE);
                
-               if (sock->link) {
+               if (sock->link || (sock->flag & SOCK_HIDE_VALUE)) {
                        uiDefBut(node->block, LABEL, 0, sock->name, sock->locx+NODE_DYS, sock->locy-NODE_DYS, node->width-NODE_DY, NODE_DY,
                                         NULL, 0, 0, 0, 0, "");
                }
index 4a851a3acac47487a00a7ceb56e9dcc84dde150a..9381eff30ddb80aca602d6d57cbc71d1ccc19105 100644 (file)
@@ -305,6 +305,7 @@ struct bNodeSocket *node_add_input_from_template(struct bNodeTree *ntree, struct
        default:
                sock = nodeAddSocket(ntree, node, SOCK_IN, stemp->name, stemp->type);
        }
+       sock->flag |= stemp->flag;
        return sock;
 }
 
@@ -351,6 +352,7 @@ static bNodeSocket *verify_socket_template(bNodeTree *ntree, bNode *node, int in
                sock->type= stemp->type;                /* in future, read this from tydefs! */
                if(stemp->limit==0) sock->limit= 0xFFF;
                else sock->limit= stemp->limit;
+               sock->flag |= stemp->flag;
                
                /* Copy the property range and subtype parameters in case the template changed.
                 * NOT copying the actual value here, only button behavior changes!
index 42460e141e27a5a1ff6e6595e104bbeeb5ee3a55..dbf9fdbdb7e380047d3288711a14470b64c529ed 100644 (file)
@@ -36,7 +36,7 @@
 
 /* **************** TEXTURE ******************** */
 static bNodeSocketTemplate sh_node_texture_in[]= {
-       {       SOCK_VECTOR, 1, "Vector",       0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE},        /* no limit */
+       {       SOCK_VECTOR, 1, "Vector",       0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},       /* no limit */
        {       -1, 0, ""       }
 };
 static bNodeSocketTemplate sh_node_texture_out[]= {