Fix wrong proxy pointer hanging around after making all local
The issue was caused because of the following circumstances: - Making All Local will just iterate all IDs and clear linked flags - It will not do anything with objects which are already local (and since proxy rig is local nothing will be changing it). This commit makes it so id_clear_lib_data() takes care of clearing all related proxy pointers, avoiding situations when proxy rig will point to a local armature. Reviewers: campbellbarton Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D1276
This commit is contained in:
parent
774e034d40
commit
7dae8e54cc
|
@ -1421,6 +1421,15 @@ void id_clear_lib_data(Main *bmain, ID *id)
|
|||
if (ntree) {
|
||||
ntree->id.lib = NULL;
|
||||
}
|
||||
|
||||
if (GS(id->name) == ID_OB) {
|
||||
Object *object = (Object*)id;
|
||||
if (object->proxy_from != NULL) {
|
||||
object->proxy_from->proxy = NULL;
|
||||
object->proxy_from->proxy_group = NULL;
|
||||
}
|
||||
object->proxy = object->proxy_from = object->proxy_group = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* next to indirect usage in read/writefile also in editobject.c scene.c */
|
||||
|
|
|
@ -1609,7 +1609,7 @@ void BKE_object_make_local(Object *ob)
|
|||
|
||||
if (ob->id.lib == NULL) return;
|
||||
|
||||
ob->proxy = ob->proxy_from = NULL;
|
||||
ob->proxy = ob->proxy_from = ob->proxy_group = NULL;
|
||||
|
||||
if (ob->id.us == 1) {
|
||||
id_clear_lib_data(bmain, &ob->id);
|
||||
|
|
Loading…
Reference in New Issue