Blender V5.0
anim_data_bmain_utils.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors, Joshua Leung. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5/* `Scene->nodetree` is deprecated but still relevant for backward compatibility. */
6#define DNA_DEPRECATED_ALLOW
7
11
12#include "BKE_anim_data.hh"
13#include "BKE_animsys.h"
14#include "BKE_global.hh"
15#include "BKE_main.hh"
16
17#include "DNA_light_types.h"
18#include "DNA_material_types.h"
19#include "DNA_scene_types.h"
20#include "DNA_texture_types.h"
21#include "DNA_world_types.h"
22
23/* Whole Database Ops -------------------------------------------- */
24
25using namespace blender;
26
27void BKE_animdata_main_cb(Main *bmain, const FunctionRef<void(ID *, AnimData *)> func)
28{
29 ID *id;
30
31/* standard data version */
32#define ANIMDATA_IDS_CB(first) \
33 for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
34 AnimData *adt = BKE_animdata_from_id(id); \
35 if (adt) { \
36 func(id, adt); \
37 } \
38 } \
39 (void)0
40
41/* "embedded" nodetree cases (i.e. scene/material/texture->nodetree) */
42#define ANIMDATA_NODETREE_IDS_CB(first, NtId_Type) \
43 for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
44 AnimData *adt = BKE_animdata_from_id(id); \
45 NtId_Type *ntp = (NtId_Type *)id; \
46 if (ntp->nodetree) { \
47 AnimData *adt2 = BKE_animdata_from_id((ID *)ntp->nodetree); \
48 if (adt2) { \
49 func((ID *)ntp->nodetree, adt2); \
50 } \
51 } \
52 if (adt) { \
53 func(id, adt); \
54 } \
55 } \
56 (void)0
57
58 /* nodes */
60
61 /* textures */
63
64 /* lights */
66
67 /* materials */
69
70 /* cameras */
72
73 /* shapekeys */
75
76 /* metaballs */
78
79 /* curves */
81
82 /* armatures */
84
85 /* lattices */
87
88 /* meshes */
90
91 /* particles */
93
94 /* speakers */
96
97 /* movie clips */
99
100 /* objects */
102
103 /* masks */
105
106 /* worlds */
108
109 /* scenes */
111
112 /* line styles */
114
115 /* grease pencil */
117
118 /* grease pencil */
120
121 /* palettes */
123
124 /* cache files */
126
127 /* Hair Curves. */
129
130 /* pointclouds */
132
133 /* volumes */
135}
136
138 const char *prefix,
139 const char *oldName,
140 const char *newName)
141{
142 Main *bmain = G.main; /* XXX UGLY! */
143 BKE_animdata_fix_paths_rename_all_ex(bmain, ref_id, prefix, oldName, newName, 0, 0, true);
144}
145
147 ID *ref_id,
148 const char *prefix,
149 const char *oldName,
150 const char *newName,
151 const int oldSubscript,
152 const int newSubscript,
153 const bool verify_paths)
154{
155 BKE_animdata_main_cb(bmain, [&](ID *id, AnimData *adt) {
157 id, adt, ref_id, prefix, oldName, newName, oldSubscript, newSubscript, verify_paths);
158 });
159}
void BKE_animdata_fix_paths_rename(struct ID *owner_id, struct AnimData *adt, struct ID *ref_id, const char *prefix, const char *oldName, const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
void BKE_animdata_main_cb(Main *bmain, const FunctionRef< void(ID *, AnimData *)> func)
void BKE_animdata_fix_paths_rename_all_ex(Main *bmain, ID *ref_id, const char *prefix, const char *oldName, const char *newName, const int oldSubscript, const int newSubscript, const bool verify_paths)
#define ANIMDATA_NODETREE_IDS_CB(first, NtId_Type)
#define ANIMDATA_IDS_CB(first)
void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const char *oldName, const char *newName)
#define G(x, y, z)
Definition DNA_ID.h:414
void * first
ListBase volumes
Definition BKE_main.hh:322
ListBase masks
Definition BKE_main.hh:312
ListBase scenes
Definition BKE_main.hh:278
ListBase grease_pencils
Definition BKE_main.hh:310
ListBase textures
Definition BKE_main.hh:285
ListBase meshes
Definition BKE_main.hh:281
ListBase movieclips
Definition BKE_main.hh:311
ListBase hair_curves
Definition BKE_main.hh:320
ListBase lights
Definition BKE_main.hh:288
ListBase nodetrees
Definition BKE_main.hh:301
ListBase particles
Definition BKE_main.hh:303
ListBase materials
Definition BKE_main.hh:284
ListBase linestyles
Definition BKE_main.hh:313
ListBase pointclouds
Definition BKE_main.hh:321
ListBase lattices
Definition BKE_main.hh:287
ListBase shapekeys
Definition BKE_main.hh:290
ListBase cameras
Definition BKE_main.hh:289
ListBase armatures
Definition BKE_main.hh:299
ListBase speakers
Definition BKE_main.hh:295
ListBase curves
Definition BKE_main.hh:282
ListBase worlds
Definition BKE_main.hh:291
ListBase palettes
Definition BKE_main.hh:304
ListBase metaballs
Definition BKE_main.hh:283
ListBase gpencils
Definition BKE_main.hh:309
ListBase objects
Definition BKE_main.hh:280
ListBase cachefiles
Definition BKE_main.hh:314