16#define DNA_DEPRECATED_ALLOW
42 Object *ob_proxy_group = ob_proxy->proxy_group;
43 const bool is_override_instancing_object = (ob_proxy_group !=
nullptr) &&
47 ID *id_instance_hint = is_override_instancing_object ? &ob_proxy_group->
id : &ob_proxy->
id;
52 if (ob_proxy->proxy !=
nullptr) {
53 ob_proxy->proxy->proxy_from =
nullptr;
56 ob_proxy->proxy = ob_proxy->proxy_group =
nullptr;
65 ob_proxy->proxy->
id.
newid = &ob_proxy->
id;
69 ob_proxy->proxy->proxy_from =
nullptr;
70 ob_proxy->proxy = ob_proxy->proxy_group =
nullptr;
102 Object *ob_proxy_group = ob_proxy->proxy_group;
103 const bool is_override_instancing_object = ob_proxy_group !=
nullptr;
110 "Proxy object '%s' successfully converted to library overrides",
114 if (is_override_instancing_object) {
127 if (object->proxy_group !=
nullptr) {
134 if (object->proxy !=
nullptr && object->proxy_group ==
nullptr) {
140 for (
LinkNode *proxy_object_iter = proxy_objects.
list; proxy_object_iter !=
nullptr;
141 proxy_object_iter = proxy_object_iter->next)
143 Object *proxy_object =
static_cast<Object *
>(proxy_object_iter->link);
151 if (object->proxy_group !=
nullptr || object->proxy !=
nullptr) {
154 "Linked proxy object '%s' from '%s' failed to be converted to library override",
156 object->id.lib->filepath);
160 "Proxy object '%s' failed to be converted to library override",
161 object->id.name + 2);
164 if (object->proxy !=
nullptr) {
165 object->proxy->proxy_from =
nullptr;
168 object->proxy =
object->proxy_group =
nullptr;
#define FOREACH_SCENE_OBJECT_END
bool BKE_scene_collections_object_remove(Main *bmain, Scene *scene, Object *ob, bool free_us)
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
bool BKE_lib_override_library_create(Main *bmain, Scene *scene, ViewLayer *view_layer, Library *owner_library, ID *id_root_reference, ID *id_hierarchy_root_reference, ID *id_instance_hint, ID **r_id_root_override, const bool do_fully_editable)
IDOverrideLibrary * BKE_lib_override_library_init(ID *local_id, ID *reference_id)
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
void void void void BLI_linklist_append(LinkNodePair *list_pair, void *ptr) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
external readfile function prototypes.
#define CLOG_WARN(clg_ref,...)
#define CLOG_INFO(clg_ref, level,...)
void DEG_id_tag_update(ID *id, unsigned int flags)
ID and Library types, which are fundamental for SDNA.
#define ID_IS_OVERRIDABLE_LIBRARY_HIERARCHY(_id)
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
bool BKE_lib_override_library_proxy_convert(Main *bmain, Scene *scene, ViewLayer *view_layer, Object *ob_proxy)
void BKE_lib_override_library_main_proxy_convert(Main *bmain, BlendFileReadReport *reports)
static void lib_override_library_proxy_convert_do(Main *bmain, Scene *scene, Object *ob_proxy, BlendFileReadReport *reports)
struct BlendFileReadReport::@128 count
int proxies_to_lib_overrides_failures
int proxies_to_lib_overrides_success
IDOverrideLibrary * override_library
struct Collection * instance_collection