Blender V4.5
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
8
9#include "BKE_anim_data.hh"
10#include "BKE_animsys.h"
11#include "BKE_global.hh"
12#include "BKE_main.hh"
13
14#include "DNA_light_types.h"
15#include "DNA_material_types.h"
16#include "DNA_scene_types.h"
17#include "DNA_texture_types.h"
18#include "DNA_world_types.h"
19
20/* Whole Database Ops -------------------------------------------- */
21
22using namespace blender;
23
24void BKE_animdata_main_cb(Main *bmain, const FunctionRef<void(ID *, AnimData *)> func)
25{
26 ID *id;
27
28/* standard data version */
29#define ANIMDATA_IDS_CB(first) \
30 for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
31 AnimData *adt = BKE_animdata_from_id(id); \
32 if (adt) { \
33 func(id, adt); \
34 } \
35 } \
36 (void)0
37
38/* "embedded" nodetree cases (i.e. scene/material/texture->nodetree) */
39#define ANIMDATA_NODETREE_IDS_CB(first, NtId_Type) \
40 for (id = static_cast<ID *>(first); id; id = static_cast<ID *>(id->next)) { \
41 AnimData *adt = BKE_animdata_from_id(id); \
42 NtId_Type *ntp = (NtId_Type *)id; \
43 if (ntp->nodetree) { \
44 AnimData *adt2 = BKE_animdata_from_id((ID *)ntp->nodetree); \
45 if (adt2) { \
46 func((ID *)ntp->nodetree, adt2); \
47 } \
48 } \
49 if (adt) { \
50 func(id, adt); \
51 } \
52 } \
53 (void)0
54
55 /* nodes */
57
58 /* textures */
60
61 /* lights */
63
64 /* materials */
66
67 /* cameras */
69
70 /* shapekeys */
72
73 /* metaballs */
75
76 /* curves */
78
79 /* armatures */
81
82 /* lattices */
84
85 /* meshes */
87
88 /* particles */
90
91 /* speakers */
93
94 /* movie clips */
96
97 /* objects */
99
100 /* masks */
102
103 /* worlds */
105
106 /* scenes */
108
109 /* line styles */
111
112 /* grease pencil */
114
115 /* grease pencil */
117
118 /* palettes */
120
121 /* cache files */
123
124 /* Hair Curves. */
126
127 /* pointclouds */
129
130 /* volumes */
132}
133
135 const char *prefix,
136 const char *oldName,
137 const char *newName)
138{
139 Main *bmain = G.main; /* XXX UGLY! */
140 BKE_animdata_fix_paths_rename_all_ex(bmain, ref_id, prefix, oldName, newName, 0, 0, true);
141}
142
144 ID *ref_id,
145 const char *prefix,
146 const char *oldName,
147 const char *newName,
148 const int oldSubscript,
149 const int newSubscript,
150 const bool verify_paths)
151{
152 BKE_animdata_main_cb(bmain, [&](ID *id, AnimData *adt) {
154 id, adt, ref_id, prefix, oldName, newName, oldSubscript, newSubscript, verify_paths);
155 });
156}
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:404
void * first
ListBase volumes
Definition BKE_main.hh:291
ListBase masks
Definition BKE_main.hh:281
ListBase scenes
Definition BKE_main.hh:245
ListBase grease_pencils
Definition BKE_main.hh:279
ListBase textures
Definition BKE_main.hh:252
ListBase meshes
Definition BKE_main.hh:248
ListBase movieclips
Definition BKE_main.hh:280
ListBase hair_curves
Definition BKE_main.hh:289
ListBase lights
Definition BKE_main.hh:255
ListBase nodetrees
Definition BKE_main.hh:270
ListBase particles
Definition BKE_main.hh:272
ListBase materials
Definition BKE_main.hh:251
ListBase linestyles
Definition BKE_main.hh:282
ListBase pointclouds
Definition BKE_main.hh:290
ListBase lattices
Definition BKE_main.hh:254
ListBase shapekeys
Definition BKE_main.hh:259
ListBase cameras
Definition BKE_main.hh:256
ListBase armatures
Definition BKE_main.hh:268
ListBase speakers
Definition BKE_main.hh:264
ListBase curves
Definition BKE_main.hh:249
ListBase worlds
Definition BKE_main.hh:260
ListBase palettes
Definition BKE_main.hh:273
ListBase metaballs
Definition BKE_main.hh:250
ListBase gpencils
Definition BKE_main.hh:278
ListBase objects
Definition BKE_main.hh:247
ListBase cachefiles
Definition BKE_main.hh:283