diff options
author | Bastien Montagne <bastien@blender.org> | 2022-01-12 12:43:42 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-02-08 12:50:39 +0300 |
commit | 32278b79a8de225a0edefa3d07693a098611a412 (patch) | |
tree | 2e8d0512a301aba00b592ccbcb97e24b709675d7 /source/blender/blenkernel/BKE_lib_override.h | |
parent | 0617efd51b0ae3fa387ee0366a453040d899f318 (diff) |
LibOverride: Add 'hierarchy root ID' info.
This change will make handling of liboverrides hierarchies (especially
resyncing) much easier and efficient. It should also make it more
resilient to 'degenerate' cases, and allow proper support of things like
parenting an override to another override of the same linked data (e.g.
a override character parented to another override of the same
character).
NOTE: this commit only implements minimal changes to add that data and
generate it for existing files on load. Actual refactor of resync code
to take advantage of this new info will happen separately.
Diffstat (limited to 'source/blender/blenkernel/BKE_lib_override.h')
-rw-r--r-- | source/blender/blenkernel/BKE_lib_override.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_lib_override.h b/source/blender/blenkernel/BKE_lib_override.h index e8065566c97..e24f8dd8927 100644 --- a/source/blender/blenkernel/BKE_lib_override.h +++ b/source/blender/blenkernel/BKE_lib_override.h @@ -113,7 +113,7 @@ struct ID *BKE_lib_override_library_create_from_id(struct Main *bmain, */ bool BKE_lib_override_library_create_from_tag(struct Main *bmain, struct Library *owner_library, - const struct Library *reference_library, + const struct ID *id_root_reference, bool do_no_main); /** * Advanced 'smart' function to create fully functional overrides. @@ -172,6 +172,15 @@ bool BKE_lib_override_library_proxy_convert(struct Main *bmain, */ void BKE_lib_override_library_main_proxy_convert(struct Main *bmain, struct BlendFileReadReport *reports); + +/** + * Find and set the 'hierarchy root' ID pointer of all library overrides in given `bmain`. + * + * NOTE: Cannot be called from `do_versions_after_linking` as this code needs a single complete + * Main database, not a split-by-libraries one. + */ +void BKE_lib_override_library_main_hierarchy_root_ensure(struct Main *bmain); + /** * Advanced 'smart' function to resync, re-create fully functional overrides up-to-date with linked * data, from an existing override hierarchy. |