2022-02-11 09:07:11 +11:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
2021-06-15 19:28:24 +02:00
|
|
|
|
|
|
|
|
/** \file
|
|
|
|
|
* \ingroup blenloader
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
struct ARegion;
|
|
|
|
|
struct ListBase;
|
2021-08-04 12:43:07 +10:00
|
|
|
struct Main;
|
2021-09-07 13:28:14 -05:00
|
|
|
struct bNodeTree;
|
2021-06-15 19:28:24 +02:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
struct ARegion *do_versions_add_region_if_not_found(struct ListBase *regionbase,
|
|
|
|
|
int region_type,
|
|
|
|
|
const char *name,
|
|
|
|
|
int link_after_region_type);
|
|
|
|
|
|
2021-12-08 17:37:44 +11:00
|
|
|
/**
|
|
|
|
|
* Rename if the ID doesn't exist.
|
|
|
|
|
*
|
|
|
|
|
* \return the ID (if found).
|
|
|
|
|
*/
|
2022-01-07 11:38:08 +11:00
|
|
|
ID *do_versions_rename_id(Main *bmain, short id_type, const char *name_src, const char *name_dst);
|
2021-08-04 12:43:07 +10:00
|
|
|
|
2021-09-07 13:28:14 -05:00
|
|
|
void version_node_socket_name(struct bNodeTree *ntree,
|
2022-01-07 11:38:08 +11:00
|
|
|
int node_type,
|
2021-09-07 13:28:14 -05:00
|
|
|
const char *old_name,
|
|
|
|
|
const char *new_name);
|
2021-10-27 08:36:59 -05:00
|
|
|
void version_node_input_socket_name(struct bNodeTree *ntree,
|
2022-01-07 11:38:08 +11:00
|
|
|
int node_type,
|
2021-10-27 08:36:59 -05:00
|
|
|
const char *old_name,
|
|
|
|
|
const char *new_name);
|
|
|
|
|
void version_node_output_socket_name(struct bNodeTree *ntree,
|
2022-01-07 11:38:08 +11:00
|
|
|
int node_type,
|
2021-10-27 08:36:59 -05:00
|
|
|
const char *old_name,
|
|
|
|
|
const char *new_name);
|
2021-09-07 13:28:14 -05:00
|
|
|
|
2021-12-08 17:37:44 +11:00
|
|
|
/**
|
|
|
|
|
* Adjust animation data for newly added node sockets.
|
|
|
|
|
*
|
|
|
|
|
* Node sockets are addressed by their index (in their RNA path, and thus FCurves/drivers), and
|
|
|
|
|
* thus when a new node is added in the middle of the list, existing animation data needs to be
|
|
|
|
|
* adjusted.
|
|
|
|
|
*
|
|
|
|
|
* Since this is about animation data, it only concerns input sockets.
|
|
|
|
|
*
|
|
|
|
|
* \param node_tree_type: Node tree type that has these nodes, for example #NTREE_SHADER.
|
|
|
|
|
* \param node_type: Node type to adjust, for example #SH_NODE_BSDF_PRINCIPLED.
|
|
|
|
|
* \param socket_index_orig: The original index of the moved socket; when socket 4 moved to 6,
|
|
|
|
|
* pass 4 here.
|
|
|
|
|
* \param socket_index_offset: The offset of the nodes, so when socket 4 moved to 6,
|
|
|
|
|
* pass 2 here.
|
|
|
|
|
* \param total_number_of_sockets: The total number of sockets in the node.
|
|
|
|
|
*/
|
2021-11-01 18:50:34 +01:00
|
|
|
void version_node_socket_index_animdata(
|
|
|
|
|
Main *bmain,
|
|
|
|
|
int node_tree_type, /* NTREE_....., e.g. NTREE_SHADER */
|
|
|
|
|
int node_type, /* SH_NODE_..., e.g. SH_NODE_BSDF_PRINCIPLED */
|
2021-11-02 16:02:13 +11:00
|
|
|
int socket_index_orig,
|
2021-11-01 18:50:34 +01:00
|
|
|
int socket_index_offset,
|
|
|
|
|
int total_number_of_sockets);
|
|
|
|
|
|
2021-12-08 17:37:44 +11:00
|
|
|
/**
|
|
|
|
|
* Replace the ID name of all nodes in the tree with the given type with the new name.
|
|
|
|
|
*/
|
2022-01-07 11:38:08 +11:00
|
|
|
void version_node_id(struct bNodeTree *ntree, int node_type, const char *new_name);
|
2021-10-14 12:06:42 -05:00
|
|
|
|
2021-12-08 17:37:44 +11:00
|
|
|
/**
|
|
|
|
|
* Convert `SocketName.001` unique name format to `SocketName_001`. Previously both were used.
|
|
|
|
|
*/
|
2021-11-12 12:22:43 -06:00
|
|
|
void version_node_socket_id_delim(bNodeSocket *socket);
|
|
|
|
|
|
2021-11-30 07:21:14 -06:00
|
|
|
struct bNodeSocket *version_node_add_socket_if_not_exist(struct bNodeTree *ntree,
|
|
|
|
|
struct bNode *node,
|
|
|
|
|
eNodeSocketInOut in_out,
|
|
|
|
|
int type,
|
|
|
|
|
int subtype,
|
|
|
|
|
const char *identifier,
|
|
|
|
|
const char *name);
|
|
|
|
|
|
2022-01-06 19:00:35 +11:00
|
|
|
/**
|
|
|
|
|
* The versioning code generally expects `SOCK_IN_USE` to be set correctly. This function updates
|
|
|
|
|
* the flag on all sockets after changes to the node tree.
|
|
|
|
|
*/
|
2021-12-21 15:18:56 +01:00
|
|
|
void version_socket_update_is_used(bNodeTree *ntree);
|
2022-04-04 12:52:48 +02:00
|
|
|
ARegion *do_versions_add_region(int regiontype, const char *name);
|
2021-12-21 15:18:56 +01:00
|
|
|
|
2021-06-15 19:28:24 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|