Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2020-12-29 16:43:12 +0300
committerBastien Montagne <bastien@blender.org>2021-01-06 18:25:39 +0300
commit6672cbeb236444541037e728759792b1208df0da (patch)
tree9b5248e4566a601673fcc538e007d2e6f549795a /source/blender/makesrna/intern/rna_object.c
parenta584aef4703aeefe0843f3b8aa2c1e863f825aef (diff)
Fix T84202: Sculpt lasso mask crash after remesh.
'Caused'/revealed by rBd29a720c45e5: Operators that fully re-create the mesh would previously rely on `sculpt_update_object` called from update code to get required sculpt-specific data layers re-added to the new mesh. Now instead put all code adding data to orig mesh for sculpt purpose into a new util function (`BKE_sculpt_ensure_orig_mesh_data`), and call that function when entering sculpt mode, and from voxel remesher code. This is contonuing effort to more clearly separate orig data from evaluated data handling/usage in sculpt code. TODO: there are likely other code paths that would need to call that new function? Reviewers: @sergey, @pablodp606 Subscribers:
Diffstat (limited to 'source/blender/makesrna/intern/rna_object.c')
-rw-r--r--source/blender/makesrna/intern/rna_object.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index e8f1c26d17f..faa20e642cf 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -483,6 +483,17 @@ static void rna_Object_dependency_update(Main *bmain, Scene *UNUSED(scene), Poin
WM_main_add_notifier(NC_OBJECT | ND_PARENT, ptr->owner_id);
}
+void rna_Object_data_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ Object *object = (Object *)ptr->data;
+
+ if (object->mode == OB_MODE_SCULPT) {
+ BKE_sculpt_ensure_orig_mesh_data(scene, object);
+ }
+
+ rna_Object_internal_update_data_dependency(bmain, scene, ptr);
+}
+
static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
Object *ob = (Object *)ptr->data;
@@ -2679,7 +2690,7 @@ static void rna_def_object(BlenderRNA *brna)
prop, NULL, "rna_Object_data_set", "rna_Object_data_typef", "rna_Object_data_poll");
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_UNLINK);
RNA_def_property_ui_text(prop, "Data", "Object data");
- RNA_def_property_update(prop, 0, "rna_Object_internal_update_data_dependency");
+ RNA_def_property_update(prop, 0, "rna_Object_data_update");
prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");