Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_node/node_draw.cc
| Show First 20 Lines • Show All 1,759 Lines • ▼ Show 20 Lines | |||||
| static void node_update(const bContext *C, bNodeTree *ntree, bNode *node) | static void node_update(const bContext *C, bNodeTree *ntree, bNode *node) | ||||
| { | { | ||||
| if (node->typeinfo->draw_nodetype_prepare) { | if (node->typeinfo->draw_nodetype_prepare) { | ||||
| node->typeinfo->draw_nodetype_prepare(C, ntree, node); | node->typeinfo->draw_nodetype_prepare(C, ntree, node); | ||||
| } | } | ||||
| } | } | ||||
| static void count_mutli_input_socket_links(bNodeTree *ntree, SpaceNode *snode) | void count_multi_input_socket_links(bNodeTree *ntree, SpaceNode *snode) | ||||
| { | { | ||||
| LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { | LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { | ||||
| LISTBASE_FOREACH (struct bNodeSocket *, socket, &node->inputs) { | LISTBASE_FOREACH (struct bNodeSocket *, socket, &node->inputs) { | ||||
| if (socket->flag & SOCK_MULTI_INPUT) { | if (socket->flag & SOCK_MULTI_INPUT) { | ||||
| Set<bNodeSocket *> visited_from_sockets; | Set<bNodeSocket *> visited_from_sockets; | ||||
| socket->total_inputs = 0; | socket->total_inputs = 0; | ||||
| LISTBASE_FOREACH (bNodeLink *, link, &ntree->links) { | LISTBASE_FOREACH (bNodeLink *, link, &ntree->links) { | ||||
| if (link->tosock == socket) { | if (link->tosock == socket) { | ||||
| Show All 16 Lines | |||||
| } | } | ||||
| void node_update_nodetree(const bContext *C, bNodeTree *ntree) | void node_update_nodetree(const bContext *C, bNodeTree *ntree) | ||||
| { | { | ||||
| /* Make sure socket "used" tags are correct, for displaying value buttons. */ | /* Make sure socket "used" tags are correct, for displaying value buttons. */ | ||||
| SpaceNode *snode = CTX_wm_space_node(C); | SpaceNode *snode = CTX_wm_space_node(C); | ||||
| ntreeTagUsedSockets(ntree); | ntreeTagUsedSockets(ntree); | ||||
| count_mutli_input_socket_links(ntree, snode); | count_multi_input_socket_links(ntree, snode); | ||||
| /* Update nodes front to back, so children sizes get updated before parents. */ | /* Update nodes front to back, so children sizes get updated before parents. */ | ||||
| LISTBASE_FOREACH_BACKWARD (bNode *, node, &ntree->nodes) { | LISTBASE_FOREACH_BACKWARD (bNode *, node, &ntree->nodes) { | ||||
| node_update(C, ntree, node); | node_update(C, ntree, node); | ||||
| } | } | ||||
| } | } | ||||
| static void node_draw(const bContext *C, | static void node_draw(const bContext *C, | ||||
| ▲ Show 20 Lines • Show All 281 Lines • Show Last 20 Lines | |||||