diff --git a/source/blender/blenkernel/BKE_modifier.hh b/source/blender/blenkernel/BKE_modifier.hh index 3fe749515f6..18b76155bdf 100644 --- a/source/blender/blenkernel/BKE_modifier.hh +++ b/source/blender/blenkernel/BKE_modifier.hh @@ -421,9 +421,6 @@ void BKE_modifier_free(ModifierData *md); */ void BKE_modifier_remove_from_list(Object *ob, ModifierData *md); -/* Generate new UID for the given modifier. */ -void BKE_modifier_session_uid_generate(ModifierData *md); - void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md); ModifierData *BKE_modifier_copy_ex(const ModifierData *md, int flag); @@ -472,7 +469,6 @@ void BKE_modifiers_foreach_tex_link(Object *ob, TexWalkFunc walk, void *user_dat ModifierData *BKE_modifiers_findby_type(const Object *ob, ModifierType type); ModifierData *BKE_modifiers_findby_name(const Object *ob, const char *name); -ModifierData *BKE_modifiers_findby_session_uid(const Object *ob, const SessionUID *session_uid); ModifierData *BKE_modifiers_findby_persistent_uid(const Object *ob, int persistent_uid); void BKE_modifiers_clear_errors(Object *ob); @@ -597,8 +593,6 @@ void BKE_modifier_deform_vertsEM(ModifierData *md, */ Mesh *BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval); -void BKE_modifier_check_uids_unique_and_report(const Object *object); - void BKE_modifier_blend_write(BlendWriter *writer, const ID *id_owner, ListBase *modbase); void BKE_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb, Object *ob); diff --git a/source/blender/blenkernel/intern/modifier.cc b/source/blender/blenkernel/intern/modifier.cc index 5d00c3cc120..19d86a7745b 100644 --- a/source/blender/blenkernel/intern/modifier.cc +++ b/source/blender/blenkernel/intern/modifier.cc @@ -162,9 +162,6 @@ static ModifierData *modifier_allocate_and_init(ModifierType type) ModifierData *BKE_modifier_new(int type) { ModifierData *md = modifier_allocate_and_init(ModifierType(type)); - - BKE_modifier_session_uid_generate(md); - return md; } @@ -221,11 +218,6 @@ void BKE_modifier_remove_from_list(Object *ob, ModifierData *md) BLI_remlink(&ob->modifiers, md); } -void BKE_modifier_session_uid_generate(ModifierData *md) -{ - md->session_uid = BLI_session_uid_generate(); -} - void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md) { if (modifiers && md) { @@ -267,16 +259,6 @@ ModifierData *BKE_modifiers_findby_name(const Object *ob, const char *name) BLI_findstring(&(ob->modifiers), name, offsetof(ModifierData, name))); } -ModifierData *BKE_modifiers_findby_session_uid(const Object *ob, const SessionUID *session_uid) -{ - LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { - if (BLI_session_uid_is_equal(&md->session_uid, session_uid)) { - return md; - } - } - return nullptr; -} - ModifierData *BKE_modifiers_findby_persistent_uid(const Object *ob, const int persistent_uid) { LISTBASE_FOREACH (ModifierData *, md, &ob->modifiers) { @@ -380,17 +362,6 @@ void BKE_modifier_copydata_ex(const ModifierData *md, ModifierData *target, cons mti->foreach_ID_link(target, nullptr, modifier_copy_data_id_us_cb, nullptr); } } - - if (flag & LIB_ID_CREATE_NO_MAIN) { - /* Make sure UID is the same between the source and the target. - * This is needed in the cases when UID is to be preserved and when there is no copy_data - * callback, or the copy_data does not do full byte copy of the modifier data. */ - target->session_uid = md->session_uid; - } - else { - /* In the case copy_data made full byte copy force UID to be re-generated. */ - BKE_modifier_session_uid_generate(target); - } } void BKE_modifier_copydata(const ModifierData *md, ModifierData *target) @@ -997,7 +968,7 @@ Mesh *BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval) ModifierData *BKE_modifier_get_original(const Object *object, ModifierData *md) { const Object *object_orig = DEG_get_original_object((Object *)object); - return BKE_modifiers_findby_session_uid(object_orig, &md->session_uid); + return BKE_modifiers_findby_persistent_uid(object_orig, md->persistent_uid); } ModifierData *BKE_modifier_get_evaluated(Depsgraph *depsgraph, Object *object, ModifierData *md) @@ -1006,30 +977,7 @@ ModifierData *BKE_modifier_get_evaluated(Depsgraph *depsgraph, Object *object, M if (object_eval == object) { return md; } - return BKE_modifiers_findby_session_uid(object_eval, &md->session_uid); -} - -void BKE_modifier_check_uids_unique_and_report(const Object *object) -{ - GSet *used_uids = BLI_gset_new( - BLI_session_uid_ghash_hash, BLI_session_uid_ghash_compare, "modifier used uids"); - - LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) { - const SessionUID *session_uid = &md->session_uid; - if (!BLI_session_uid_is_generated(session_uid)) { - printf("Modifier %s -> %s does not have UID generated.\n", object->id.name + 2, md->name); - continue; - } - - if (BLI_gset_lookup(used_uids, session_uid) != nullptr) { - printf("Modifier %s -> %s has duplicate UID generated.\n", object->id.name + 2, md->name); - continue; - } - - BLI_gset_insert(used_uids, (void *)session_uid); - } - - BLI_gset_free(used_uids, nullptr); + return BKE_modifiers_findby_persistent_uid(object_eval, md->persistent_uid); } void BKE_modifiers_persistent_uid_init(const Object &object, ModifierData &md) @@ -1299,8 +1247,6 @@ void BKE_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb, Object BLO_read_list(reader, lb); LISTBASE_FOREACH (ModifierData *, md, lb) { - BKE_modifier_session_uid_generate(md); - md->error = nullptr; md->runtime = nullptr; diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc index 585add586ce..ae37e27d5bb 100644 --- a/source/blender/blenkernel/intern/object.cc +++ b/source/blender/blenkernel/intern/object.cc @@ -5329,7 +5329,6 @@ void BKE_object_to_curve_clear(Object *object) void BKE_object_check_uids_unique_and_report(const Object *object) { BKE_pose_check_uids_unique_and_report(object->pose); - BKE_modifier_check_uids_unique_and_report(object); } SubsurfModifierData *BKE_object_get_last_subsurf_modifier(const Object *ob) diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.cc b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.cc index cd17460ae5b..16208ff0356 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.cc @@ -58,10 +58,7 @@ void ObjectRuntimeBackup::backup_modifier_runtime_data(Object *object) continue; } - const SessionUID &session_uid = modifier_data->session_uid; - BLI_assert(BLI_session_uid_is_generated(&session_uid)); - - modifier_runtime_data.add(session_uid, ModifierDataBackup(modifier_data)); + modifier_runtime_data.add(modifier_data->persistent_uid, ModifierDataBackup(modifier_data)); modifier_data->runtime = nullptr; } } @@ -149,10 +146,8 @@ void ObjectRuntimeBackup::restore_to_object(Object *object) void ObjectRuntimeBackup::restore_modifier_runtime_data(Object *object) { LISTBASE_FOREACH (ModifierData *, modifier_data, &object->modifiers) { - const SessionUID &session_uid = modifier_data->session_uid; - BLI_assert(BLI_session_uid_is_generated(&session_uid)); - - optional backup = modifier_runtime_data.pop_try(session_uid); + optional backup = modifier_runtime_data.pop_try( + modifier_data->persistent_uid); if (backup.has_value()) { modifier_data->runtime = backup->runtime; } diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.h b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.h index 197ab7c7ce5..e9ad26ab45f 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.h +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_object.h @@ -46,7 +46,7 @@ class ObjectRuntimeBackup { optional light_linking_runtime; short base_flag; unsigned short base_local_view_bits; - Map modifier_runtime_data; + Map modifier_runtime_data; Map pose_channel_runtime_data; }; diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index cc6887bbbff..148e598e131 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -153,9 +153,6 @@ typedef struct ModifierData { char *error; - /** Runtime field which contains unique identifier of the modifier. */ - SessionUID session_uid; - /** Runtime field which contains runtime data which is specific to a modifier type. */ void *runtime; } ModifierData;