diff options
author | Bastien Montagne <bastien@blender.org> | 2022-02-22 19:20:18 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-03-29 18:58:40 +0300 |
commit | 5adcf6c85e4c28fcfda0048a9ec7cceae105046d (patch) | |
tree | ebc6b23cb3ede2cd3581371aaf6fae3f057eb511 /source/blender/blenkernel | |
parent | 101308403833aedbfef1d105424867a8f787d7b6 (diff) |
LibOverride: Add initial System Override flag.
This merely adds the flag, exposes it in RMA, and uses it in some of the
most common 'is editable' checks (RNA, `BASE_EDITABLE` macro...).
Next step: do_version and defining systemoverrides at creation.
Ref: {T95707}.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_lib_override.h | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.c | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_lib_override.h b/source/blender/blenkernel/BKE_lib_override.h index 98301ca7a70..daa94031489 100644 --- a/source/blender/blenkernel/BKE_lib_override.h +++ b/source/blender/blenkernel/BKE_lib_override.h @@ -65,6 +65,11 @@ void BKE_lib_override_library_free(struct IDOverrideLibrary **override, bool do_ bool BKE_lib_override_library_is_user_edited(struct ID *id); /** + * Check if given ID is a system override. + */ +bool BKE_lib_override_library_is_system_defined(struct Main *bmain, struct ID *id); + +/** * Create an overridden local copy of linked reference. * * \note This function is very basic, low-level. It does not consider any hierarchical dependency, diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c index cd5855af043..c0d49105dad 100644 --- a/source/blender/blenkernel/intern/lib_override.c +++ b/source/blender/blenkernel/intern/lib_override.c @@ -276,6 +276,18 @@ bool BKE_lib_override_library_is_user_edited(struct ID *id) return false; } +bool BKE_lib_override_library_is_system_defined(Main *bmain, ID *id) +{ + + if (ID_IS_OVERRIDE_LIBRARY(id)) { + ID *override_owner_id; + lib_override_get(bmain, id, &override_owner_id); + return (override_owner_id->override_library->flag & IDOVERRIDE_LIBRARY_FLAG_SYSTEM_DEFINED) != + 0; + } + return false; +} + ID *BKE_lib_override_library_create_from_id(Main *bmain, ID *reference_id, const bool do_tagged_remap) |