[Bf-blender-cvs] [227ed1aa351] master: Fix T60451: Soft body cache not being cleared when it should

Sergey Sharybin noreply at git.blender.org
Fri Feb 1 15:40:47 CET 2019


Commit: 227ed1aa3516ae1504f49be90085b2fdc703f6a1
Author: Sergey Sharybin
Date:   Fri Feb 1 14:05:00 2019 +0100
Branches: master
https://developer.blender.org/rB227ed1aa3516ae1504f49be90085b2fdc703f6a1

Fix T60451: Soft body cache not being cleared when it should

Manual edits to object or its dependencies should reset the
point cache. Added special relations for this now.

===================================================================

M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index ac827d8272a..c70e84db568 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -922,7 +922,9 @@ void DepsgraphRelationBuilder::build_object_pointcache(Object *object)
 		}
 		else {
 			flag = FLAG_GEOMETRY;
-			ComponentKey geometry_key(&object->id, NodeType::GEOMETRY);
+			OperationKey geometry_key(&object->id,
+			                          NodeType::GEOMETRY,
+			                          OperationCode::GEOMETRY_EVAL);
 			add_relation(
 			        point_cache_key, geometry_key, "Point Cache -> Geometry");
 		}
@@ -933,6 +935,23 @@ void DepsgraphRelationBuilder::build_object_pointcache(Object *object)
 			break;
 		}
 	}
+	/* Manual edits to any dependency (or self) should reset the point cache. */
+	if (!BLI_listbase_is_empty(&ptcache_id_list)) {
+		OperationKey transform_local_key(&object->id,
+		                                 NodeType::TRANSFORM,
+		                                 OperationCode::TRANSFORM_LOCAL);
+		OperationKey geometry_init_key(&object->id,
+		                               NodeType::GEOMETRY,
+		                               OperationCode::GEOMETRY_EVAL_INIT);
+		add_relation(transform_local_key,
+		             point_cache_key,
+		             "Transform Local -> Point Cache",
+		             RELATION_FLAG_FLUSH_USER_EDIT_ONLY);
+		add_relation(geometry_init_key,
+		             point_cache_key,
+		             "Geometry Init -> Point Cache",
+		             RELATION_FLAG_FLUSH_USER_EDIT_ONLY);
+	}
 	BLI_freelistN(&ptcache_id_list);
 }



More information about the Bf-blender-cvs mailing list