LibOverride: Fix some issues from.revealed by recent previous commit.
rB57097e9a8515 did not properly consider case where you have more than one override for a same reference linked ID. Also adds more security checks around shapekeys, since match between override and its linked reference is never ensured either way (fixes a crash reported by @Rik from Blender studio).
This commit is contained in:
parent
f72cedffb6
commit
4a445c8dc0
|
@ -455,8 +455,10 @@ static void lib_override_remapper_overrides_add(IDRemapper *id_remapper,
|
|||
|
||||
Key *reference_key, *local_key = nullptr;
|
||||
if ((reference_key = BKE_key_from_id(reference_id)) != nullptr) {
|
||||
local_key = BKE_key_from_id(reference_id->newid);
|
||||
BLI_assert(local_key != nullptr);
|
||||
if (reference_id->newid != nullptr) {
|
||||
local_key = BKE_key_from_id(reference_id->newid);
|
||||
BLI_assert(local_key != nullptr);
|
||||
}
|
||||
|
||||
BKE_id_remapper_add(id_remapper, &reference_key->id, &local_key->id);
|
||||
}
|
||||
|
@ -599,8 +601,9 @@ bool BKE_lib_override_library_create_from_tag(Main *bmain,
|
|||
other_id->override_library->hierarchy_root == id_hierarchy_root) {
|
||||
reference_id = other_id->override_library->reference;
|
||||
ID *local_id = reference_id->newid;
|
||||
BLI_assert(other_id == local_id);
|
||||
lib_override_remapper_overrides_add(id_remapper, reference_id, local_id);
|
||||
if (other_id == local_id) {
|
||||
lib_override_remapper_overrides_add(id_remapper, reference_id, local_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (other_id != id) {
|
||||
|
|
Loading…
Reference in New Issue