Fix T64763: 'Make Proxy' creates Proxy within linked Collection.

`BKE_collection_object_add_from()` would not check wether collections
were local or not... Trivial to fix.

Note that here I assume we do not use that function in some special
cases where we would like to edit linked datablocks. Think that is
reasonable stance, though.
This commit is contained in:
Bastien Montagne 2019-05-21 10:31:39 +02:00
parent 21d065af5d
commit 52643bb9e7
Notes: blender-bot 2023-02-14 11:25:11 +01:00
Referenced by issue #64763, Linked Armatures without 'Instance Collections': 'Make Proxy' creates Proxy within linked Collection
1 changed files with 12 additions and 3 deletions

View File

@ -705,18 +705,27 @@ bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
}
/**
* Add object to all scene collections that reference objects is in
* (used to copy objects)
* Add object to all scene collections that reference object is in
* (used to copy objects).
*/
void BKE_collection_object_add_from(Main *bmain, Scene *scene, Object *ob_src, Object *ob_dst)
{
bool is_instantiated = false;
FOREACH_SCENE_COLLECTION_BEGIN (scene, collection) {
if (BKE_collection_has_object(collection, ob_src)) {
if (!ID_IS_LINKED(collection) && BKE_collection_has_object(collection, ob_src)) {
collection_object_add(bmain, collection, ob_dst, 0, true);
is_instantiated = true;
}
}
FOREACH_SCENE_COLLECTION_END;
if (!is_instantiated) {
/* In case we could not find any non-linked collections in which instantiate our ob_dst,
* fallback to scene's master collection... */
collection_object_add(bmain, BKE_collection_master(scene), ob_dst, 0, true);
}
BKE_main_collection_sync(bmain);
}