78 for (
bNodeLink &iter_link : internal_links) {
79 if (iter_link.tosock == sock) {
80 sock->
stack_index = iter_link.fromsock->stack_index;
84 sock->
link = &iter_link;
125 switch (sock->
type) {
149 ntree.ensure_topology_cache();
157 for (
int old_i =
nodes.size() - 1; old_i >= 0; old_i--) {
168 for (
int new_i = old_i + 1; new_i <
nodes.size(); new_i++) {
202 ntree->ensure_topology_cache();
208 exec->nodetree = ntree;
220 if (node->is_muted() || node->is_reroute()) {
236 exec->stacksize = index;
241 for (n = 0; n <
exec->stacksize; n++) {
242 exec->stack[n].hasinput = 1;
246 for (n = 0, nodeexec =
exec->nodeexec; n < nodelist.
size(); n++, nodeexec++) {
247 node = nodeexec->
node = nodelist[n];
286 for (n = 0, nodeexec =
exec->nodeexec; n < exec->totnodes; n++, nodeexec++) {
292 if (
exec->nodeexec) {
void BKE_ntree_update_after_single_tree_change(Main &bmain, bNodeTree &modified_tree, const NodeTreeUpdateExtraParams ¶ms={})
#define LISTBASE_FOREACH(type, var, list)
Read Guarded memory(de)allocation.
IndexRange index_range() const
bool contains_zone_recursively(const bNodeTreeZone &other_zone) const
std::optional< int > output_node_id
const bNodeTreeZone * get_zone_by_node(const int32_t node_id) const
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
bNodeInstanceKey node_instance_key(bNodeInstanceKey parent_key, const bNodeTree *ntree, const bNode *node)
bNodeTreeExec * ntree_exec_begin(bNodeExecContext *context, bNodeTree *ntree, bNodeInstanceKey parent_key)
void node_get_stack(bNode *node, bNodeStack *stack, bNodeStack **in, bNodeStack **out)
static void node_init_output_index(bNodeSocket *sock, int *index)
bNodeStack * node_get_socket_stack(bNodeStack *stack, bNodeSocket *sock)
static void node_init_input_index(bNodeSocket *sock, int *index)
static bNodeStack * setup_stack(bNodeStack *stack, bNodeTree *ntree, bNode *node, bNodeSocket *sock)
static blender::Vector< bNode * > get_node_code_gen_order(bNodeTree &ntree)
static void node_init_output_index_muted(bNodeSocket *sock, int *index, const blender::MutableSpan< bNodeLink > internal_links)
static int node_exec_socket_use_stack(bNodeSocket *sock)
void ntree_exec_end(bNodeTreeExec *exec)
static void exec(void *data, int, bNode *node, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out)
bool node_socket_get_bool(bNodeTree *ntree, bNode *, bNodeSocket *sock)
int node_socket_get_int(bNodeTree *ntree, bNode *, bNodeSocket *sock)
void node_socket_get_color(bNodeTree *ntree, bNode *, bNodeSocket *sock, float *value)
float node_socket_get_float(bNodeTree *ntree, bNode *, bNodeSocket *sock)
void node_socket_get_vector(bNodeTree *ntree, bNode *, bNodeSocket *sock, float *value)
blender::bke::NodeFreeExecFunction free_exec_fn
bNodeTypeHandle * typeinfo
bNodeRuntimeHandle * runtime