Separate the "insert nodes into group" operation into more distinct phases. This helps to clarify what is actually happening, to avoid redundant updates to group nodes every time a new socket is discovered, and to make use of the topology cache to avoid the "accidentally quadratic" alrogithms that we have slowly been removing from node editing. The change is motivated by the desire to use dynamic node declarations for group nodes and group input/output nodes, where it is helpful to avoid updating the declaration and sockets multiple times.
39 lines
961 B
C++
39 lines
961 B
C++
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
* Copyright 2007 Blender Foundation. All rights reserved. */
|
|
|
|
/** \file
|
|
* \ingroup nodes
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DNA_listBase.h"
|
|
|
|
#include "BLI_utildefines.h"
|
|
|
|
#include "BKE_node.h"
|
|
|
|
#include "RNA_types.h"
|
|
|
|
struct bNode;
|
|
struct bNodeTree;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct bNodeSocket *node_add_socket_from_template(struct bNodeTree *ntree,
|
|
struct bNode *node,
|
|
struct bNodeSocketTemplate *stemp,
|
|
eNodeSocketInOut in_out);
|
|
|
|
void node_verify_sockets(struct bNodeTree *ntree, struct bNode *node, bool do_id_user);
|
|
|
|
void node_socket_init_default_value(struct bNodeSocket *sock);
|
|
void node_socket_copy_default_value(struct bNodeSocket *to, const struct bNodeSocket *from);
|
|
void register_standard_node_socket_types(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|