54 char new_name[
sizeof(tno->
name)];
58 const char *name = tno->
name;
65 for (; i; i = i->
next) {
72 if (new_name[0] ==
'\0') {
73 int len = strlen(name);
74 if (
len >= 4 && sscanf(name +
len - 4,
".%03d", &suffix) == 1) {
80 if (new_len > (
sizeof(tno->
name) - 1)) {
81 new_len = (
sizeof(tno->
name) - 1);
88 int name_ofs = new_len - 4;
89 BLI_snprintf(new_name + name_ofs,
sizeof(new_name) - name_ofs,
".%03d", ++suffix);
92 if (new_name[0] !=
'\0') {
103 while (tnode->
prev) {
108 for (; tnode; tnode = tnode->
next) {
#define NODE_CLASS_OUTPUT
#define STRNCPY(dst, src)
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void node_type_size_preset(bNodeType *ntype, eNodeSizePreset size)
void node_type_socket_templates(bNodeType *ntype, bNodeSocketTemplate *inputs, bNodeSocketTemplate *outputs)
void node_type_storage(bNodeType *ntype, const char *storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
void node_register_type(bNodeType *ntype)
static void exec(void *data, int, bNode *node, bNodeExecData *execdata, bNodeStack **in, bNodeStack **out)
static blender::bke::bNodeSocketTemplate inputs[]
static void init(bNodeTree *, bNode *node)
static void copy(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node)
static void unique_name(bNode *node)
static void exec(void *data, int, bNode *node, bNodeExecData *, bNodeStack **in, bNodeStack **)
void register_node_type_tex_output()
static void assign_index(bNode *node)
void tex_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
void tex_input_rgba(float *out, bNodeStack *in, TexParams *params, short thread)
void params_from_cdata(TexParams *out, TexCallData *in)
void node_free_standard_storage(bNode *node)
void node_copy_standard_storage(bNodeTree *, bNode *dest_node, const bNode *src_node)
Compact definition of a node socket.
void(* initfunc)(bNodeTree *ntree, bNode *node)