26 while (nodes_.size()) {
27 delete nodes_.pop_last();
39 if (
STREQ(b_sock->identifier, identifier)) {
49 if (
STREQ(b_sock->identifier, identifier)) {
61 node->set_bnodetree(b_ntree);
62 node->set_instance_key(key);
63 node->set_is_in_active_group(is_active_group);
72 links_.append(
Link(from_socket, to_socket));
83 const bNodeTree *basetree = context.get_bnodetree();
94 NodeRange node_range(nodes_.begin() + nodes_start, nodes_.end());
105 bool is_active_group)
124 add_node(node, b_ntree, key, is_active_group);
133 for (
NodeOutput *output : node->get_output_sockets()) {
134 if (output->get_bnode_socket() == b_socket) {
165 for (
NodeInput *input : node->get_input_sockets()) {
166 if (input->get_bnode_socket() == b_nodelink->
tosock && !input->is_linked()) {
178 bool is_active_group)
180 for (
const bNodeLink &b_link : b_node->internal_links()) {
182 add_node(proxy, b_ntree, key, is_active_group);
189 bool is_active_group)
196 if (input->type == output->type) {
203 add_node(proxy, b_ntree, key, is_active_group);
215 bool is_active_group =
false;
218 b_sock_io = b_sock_io->next)
223 add_node(proxy, b_group_tree, key, is_active_group);
237 bool is_active_group =
false;
240 b_sock_io = b_sock_io->next)
245 add_node(proxy, b_group_tree, key, is_active_group);
264 int nodes_start = nodes_.size();
268 b_node_io = b_node_io->next)
285 bool is_active_group)
289 add_node(proxy, b_ntree, key, is_active_group);
#define NODE_CUSTOM_GROUP
#define NODE_GROUP_OUTPUT
Overall context of the compositor.
static void node_added(const Node *node)
static bNodeSocket * find_b_node_input(bNode *b_node, const char *identifier)
void add_bNodeTree(const CompositorContext &context, int nodes_start, bNodeTree *tree, bNodeInstanceKey parent_key)
void add_bNode(const CompositorContext &context, bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
std::pair< Vector< Node * >::iterator, Vector< Node * >::iterator > NodeRange
void from_bNodeTree(const CompositorContext &context, bNodeTree *tree)
void add_proxies_group_inputs(bNode *b_node, bNode *b_node_io)
void add_proxies_reroute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
void add_proxies_skip(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
NodeOutput * find_output(const NodeRange &node_range, bNodeSocket *b_socket)
void add_proxies_mute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
void add_proxies_group_outputs(const CompositorContext &context, bNode *b_node, bNode *b_node_io)
void add_link(NodeOutput *from_socket, NodeInput *to_socket)
static bNodeSocket * find_b_node_output(bNode *b_node, const char *identifier)
void add_bNodeLink(const NodeRange &node_range, bNodeLink *b_nodelink)
void add_proxies_group(const CompositorContext &context, bNode *b_node, bNodeInstanceKey key)
void add_node(Node *node, bNodeTree *b_ntree, bNodeInstanceKey key, bool is_active_group)
NodeOutput are sockets that can send data/input.
const bNodeInstanceKey NODE_INSTANCE_KEY_BASE
bNodeInstanceKey node_instance_key(bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
Node * COM_convert_bnode(bNode *b_node)
Wraps a bNode in its Node instance.
bNodeInstanceKey active_viewer_key