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:
@@ -1421,6 +1421,15 @@ void id_clear_lib_data(Main *bmain, ID *id)
|
|||||||
if (ntree) {
|
if (ntree) {
|
||||||
ntree->id.lib = NULL;
|
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 */
|
/* 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;
|
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) {
|
if (ob->id.us == 1) {
|
||||||
id_clear_lib_data(bmain, &ob->id);
|
id_clear_lib_data(bmain, &ob->id);
|
||||||
|
|||||||
Reference in New Issue
Block a user