77 for (
bNodeLink &iter_link : internal_links) {
78 if (iter_link.tosock == sock) {
79 sock->
stack_index = iter_link.fromsock->stack_index;
83 sock->
link = &iter_link;
124 switch (sock->
type) {
158 ntree->ensure_topology_cache();
159 const Span<bNode *> nodelist = ntree->toposort_left_to_right();
162 exec = MEM_cnew<bNodeTreeExec>(
"node tree execution data");
164 exec->nodetree = ntree;
191 "node execution data");
193 exec->stacksize = index;
198 for (n = 0; n <
exec->stacksize; n++) {
199 exec->stack[n].hasinput = 1;
203 for (n = 0, nodeexec =
exec->nodeexec; n < nodelist.
size(); n++, nodeexec++) {
204 node = nodeexec->
node = nodelist[n];
227 context->previews, nodekey) :
246 for (n = 0, nodeexec =
exec->nodeexec; n < exec->totnodes; n++, nodeexec++) {
252 if (
exec->nodeexec) {
void BKE_ntree_update_main_tree(Main *bmain, bNodeTree *ntree, NodeTreeUpdateExtraParams *params)
#define LISTBASE_FOREACH(type, var, list)
Read Guarded memory(de)allocation.
constexpr int64_t size() const
constexpr IndexRange index_range() const
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void * node_instance_hash_lookup(bNodeInstanceHash *hash, bNodeInstanceKey key)
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 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)
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