Refactor/enhance BKE_object_make_local().
authorBastien Montagne <montagne29@wanadoo.fr>
Fri, 8 Jul 2016 14:20:21 +0000 (16:20 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Fri, 8 Jul 2016 16:11:20 +0000 (18:11 +0200)
commitd1a4ae3f395a6dbb6487c5885d2327129d9b4532
tree7602507455f9be0963087904b379c44ec8f3c772
parentf3fe1f9c44b08de6d18cad27d8751585568b7e8e
Refactor/enhance BKE_object_make_local().

Now using modern features from libquery/libremap areas.

Also, it should handle much better cases where localized ID was also indirectly used by non-refcounting users
(typical case: object used as modifier/constraint/whatever target from another linked object, previous
code would not take those into account and just localize original object instead of making a local copy.
Would result in local object used by linked one, which would be partially 'undone' on next file reload... Crappy behavior).

And it fixes some obvious errors too (nullifying all proxy pointers unconditionnaly,
some missing refcounted usages cases in extern_local_object(), etc.).
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/object.c