[Bf-blender-cvs] [9d9dc06] master: Made SimDebugData into a single global instance.

Lukas Tönne noreply at git.blender.org
Tue Jan 20 18:32:09 CET 2015


Commit: 9d9dc06014ea7f8fd186246d1e55d429c5193cb6
Author: Lukas Tönne
Date:   Tue Jan 20 18:29:31 2015 +0100
Branches: master
https://developer.blender.org/rB9d9dc06014ea7f8fd186246d1e55d429c5193cb6

Made SimDebugData into a single global instance.

This way it doesn't have to be stored as DNA runtime pointers or passed
down as a function argument. Currently there is now no property or
button to enable debugging, this will be added again later.

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

M	source/blender/blenkernel/BKE_effect.h
M	source/blender/blenkernel/intern/collision.c
M	source/blender/blenkernel/intern/effect.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/drawsimdebug.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_intern.h
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/intern/rna_modifier.c
M	source/blender/modifiers/intern/MOD_cloth.c
M	source/blender/physics/intern/BPH_mass_spring.cpp
M	source/blender/physics/intern/hair_volume.cpp
M	source/blender/physics/intern/implicit.h
M	source/blender/physics/intern/implicit_blender.c
M	source/blender/physics/intern/implicit_eigen.cpp

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

diff --git a/source/blender/blenkernel/BKE_effect.h b/source/blender/blenkernel/BKE_effect.h
index c851454..c4c27e1 100644
--- a/source/blender/blenkernel/BKE_effect.h
+++ b/source/blender/blenkernel/BKE_effect.h
@@ -188,36 +188,39 @@ typedef struct SimDebugData {
 	struct GHash *gh;
 } SimDebugData;
 
-struct SimDebugData *BKE_sim_debug_data_new(void);
+extern SimDebugData *_sim_debug_data;
 
-void BKE_sim_debug_data_add_element(struct SimDebugData *debug_data, int type, const float v1[3], const float v2[3],
+void BKE_sim_debug_data_set_enabled(bool enable);
+bool BKE_sim_debug_data_get_enabled(void);
+void BKE_sim_debug_data_free(void);
+
+void BKE_sim_debug_data_add_element(int type, const float v1[3], const float v2[3],
                                     float r, float g, float b, const char *category, unsigned int hash);
-void BKE_sim_debug_data_remove_element(struct SimDebugData *debug_data, unsigned int hash);
+void BKE_sim_debug_data_remove_element(unsigned int hash);
 
-#define BKE_sim_debug_data_add_dot(debug_data, p, r, g, b, category, ...) { \
+#define BKE_sim_debug_data_add_dot(p, r, g, b, category, ...) { \
 	const float v2[3] = { 0.0f, 0.0f, 0.0f }; \
-	BKE_sim_debug_data_add_element(debug_data, SIM_DEBUG_ELEM_DOT, p, v2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
+	BKE_sim_debug_data_add_element(SIM_DEBUG_ELEM_DOT, p, v2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
 }
 
-#define BKE_sim_debug_data_add_circle(debug_data, p, radius, r, g, b, category, ...) { \
+#define BKE_sim_debug_data_add_circle(p, radius, r, g, b, category, ...) { \
 	const float v2[3] = { radius, 0.0f, 0.0f }; \
-	BKE_sim_debug_data_add_element(debug_data, SIM_DEBUG_ELEM_CIRCLE, p, v2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
+	BKE_sim_debug_data_add_element(SIM_DEBUG_ELEM_CIRCLE, p, v2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
 }
 
-#define BKE_sim_debug_data_add_line(debug_data, p1, p2, r, g, b, category, ...) { \
-	BKE_sim_debug_data_add_element(debug_data, SIM_DEBUG_ELEM_LINE, p1, p2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
+#define BKE_sim_debug_data_add_line(p1, p2, r, g, b, category, ...) { \
+	BKE_sim_debug_data_add_element(SIM_DEBUG_ELEM_LINE, p1, p2, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
 }
 
-#define BKE_sim_debug_data_add_vector(debug_data, p, d, r, g, b, category, ...) { \
-	BKE_sim_debug_data_add_element(debug_data, SIM_DEBUG_ELEM_VECTOR, p, d, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
+#define BKE_sim_debug_data_add_vector(p, d, r, g, b, category, ...) { \
+	BKE_sim_debug_data_add_element(SIM_DEBUG_ELEM_VECTOR, p, d, r, g, b, category, SIM_DEBUG_HASH(__VA_ARGS__)); \
 }
 
-#define BKE_sim_debug_data_remove(debug_data, ...) \
-	BKE_sim_debug_data_remove_element(debug_data, SIM_DEBUG_HASH(__VA_ARGS__))
+#define BKE_sim_debug_data_remove(...) \
+	BKE_sim_debug_data_remove_element(SIM_DEBUG_HASH(__VA_ARGS__))
 
-void BKE_sim_debug_data_clear(struct SimDebugData *debug_data);
-void BKE_sim_debug_data_clear_category(struct SimDebugData *debug_data, const char *category);
-void BKE_sim_debug_data_free(struct SimDebugData *debug_data);
+void BKE_sim_debug_data_clear(void);
+void BKE_sim_debug_data_clear_category(const char *category);
 
 #endif
 
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 92cd1ee..5266c5b 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -990,11 +990,9 @@ static bool cloth_points_collision_response_static(ClothModifierData *clmd, Coll
 		mag_v_rel = dot_v3v3(v_rel_old, collpair->normal);
 
 		/**** DEBUG ****/
-		if (clmd->debug_data) {
-			BKE_sim_debug_data_add_dot(clmd->debug_data, collpair->pa, 0.9, 0.2, 0.2, "collision", 833, collpair->face1, collpair->face2);
-			BKE_sim_debug_data_add_dot(clmd->debug_data, collpair->pb, 0.2, 0.9, 0.2, "collision", 834, collpair->face1, collpair->face2);
-			BKE_sim_debug_data_add_line(clmd->debug_data, collpair->pa, collpair->pb, 0.8, 0.8, 0.8, "collision", 835, collpair->face1, collpair->face2);
-		}
+		BKE_sim_debug_data_add_dot(collpair->pa, 0.9, 0.2, 0.2, "collision", 833, collpair->face1, collpair->face2);
+		BKE_sim_debug_data_add_dot(collpair->pb, 0.2, 0.9, 0.2, "collision", 834, collpair->face1, collpair->face2);
+		BKE_sim_debug_data_add_line(collpair->pa, collpair->pb, 0.8, 0.8, 0.8, "collision", 835, collpair->face1, collpair->face2);
 		/********/
 
 		if (mag_v_rel < -ALMOST_ZERO) {
@@ -1106,7 +1104,7 @@ BLI_INLINE bool cloth_point_face_collision_params(const float p1[3], const float
 }
 
 static CollPair *cloth_point_collpair(float p1[3], float p2[3], MVert *mverts, int bp1, int bp2, int bp3,
-                                      int index_cloth, int index_coll, float epsilon, CollPair *collpair, SimDebugData *UNUSED(debug_data))
+                                      int index_cloth, int index_coll, float epsilon, CollPair *collpair)
 {
 	float *co1 = mverts[bp1].co, *co2 = mverts[bp2].co, *co3 = mverts[bp3].co;
 	float lambda, distance1, distance2;
@@ -1163,9 +1161,9 @@ static CollPair* cloth_point_collision(ModifierData *md1, ModifierData *md2,
 	vert = &clmd->clothObject->verts[overlap->indexA];
 	face = &collmd->mfaces[overlap->indexB];
 
-	collpair = cloth_point_collpair(vert->tx, vert->x, mverts, face->v1, face->v2, face->v3, overlap->indexA, overlap->indexB, epsilon, collpair, clmd->debug_data);
+	collpair = cloth_point_collpair(vert->tx, vert->x, mverts, face->v1, face->v2, face->v3, overlap->indexA, overlap->indexB, epsilon, collpair);
 	if (face->v4)
-		collpair = cloth_point_collpair(vert->tx, vert->x, mverts, face->v3, face->v4, face->v1, overlap->indexA, overlap->indexB, epsilon, collpair, clmd->debug_data);
+		collpair = cloth_point_collpair(vert->tx, vert->x, mverts, face->v3, face->v4, face->v1, overlap->indexA, overlap->indexB, epsilon, collpair);
 
 	return collpair;
 }
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index e43bde7..c896fa2 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -1029,6 +1029,8 @@ void pdDoEffectors(ListBase *effectors, ListBase *colliders, EffectorWeights *we
 
 /* ======== Simulation Debugging ======== */
 
+SimDebugData *_sim_debug_data = NULL;
+
 unsigned int BKE_sim_debug_data_hash(int i)
 {
 	return BLI_ghashutil_uinthash((unsigned int)i);
@@ -1080,12 +1082,31 @@ static void debug_element_free(void *val)
 	MEM_freeN(elem);
 }
 
-SimDebugData *BKE_sim_debug_data_new(void)
+void BKE_sim_debug_data_set_enabled(bool enable)
 {
-	SimDebugData *debug_data = MEM_callocN(sizeof(SimDebugData), "sim debug data");
-	debug_data->gh = BLI_ghash_new(debug_element_hash, debug_element_compare, "sim debug element hash");
-	return debug_data;
-	
+	if (enable) {
+		if (!_sim_debug_data) {
+			_sim_debug_data = MEM_callocN(sizeof(SimDebugData), "sim debug data");
+			_sim_debug_data->gh = BLI_ghash_new(debug_element_hash, debug_element_compare, "sim debug element hash");
+		}
+	}
+	else {
+		BKE_sim_debug_data_free();
+	}
+}
+
+bool BKE_sim_debug_data_get_enabled(void)
+{
+	return _sim_debug_data != NULL;
+}
+
+void BKE_sim_debug_data_free(void)
+{
+	if (_sim_debug_data) {
+		if (_sim_debug_data->gh)
+			BLI_ghash_free(_sim_debug_data->gh, NULL, debug_element_free);
+		MEM_freeN(_sim_debug_data);
+	}
 }
 
 static void debug_data_insert(SimDebugData *debug_data, SimDebugElement *elem)
@@ -1099,11 +1120,11 @@ static void debug_data_insert(SimDebugData *debug_data, SimDebugElement *elem)
 		BLI_ghash_insert(debug_data->gh, elem, elem);
 }
 
-void BKE_sim_debug_data_add_element(SimDebugData *debug_data, int type, const float v1[3], const float v2[3], float r, float g, float b, const char *category, unsigned int hash)
+void BKE_sim_debug_data_add_element(int type, const float v1[3], const float v2[3], float r, float g, float b, const char *category, unsigned int hash)
 {
 	unsigned int category_hash = BLI_ghashutil_strhash_p(category);
 	SimDebugElement *elem;
-	if (!debug_data)
+	if (!_sim_debug_data)
 		return;
 	
 	elem = MEM_callocN(sizeof(SimDebugElement), "sim debug data element");
@@ -1116,54 +1137,44 @@ void BKE_sim_debug_data_add_element(SimDebugData *debug_data, int type, const fl
 	copy_v3_v3(elem->v1, v1);
 	copy_v3_v3(elem->v2, v2);
 	
-	debug_data_insert(debug_data, elem);
+	debug_data_insert(_sim_debug_data, elem);
 }
 
-void BKE_sim_debug_data_remove_element(SimDebugData *debug_data, unsigned int hash)
+void BKE_sim_debug_data_remove_element(unsigned int hash)
 {
 	SimDebugElement dummy;
-	if (!debug_data)
+	if (!_sim_debug_data)
 		return;
 	
 	dummy.hash = hash;
-	BLI_ghash_remove(debug_data->gh, &dummy, NULL, debug_element_free);
+	BLI_ghash_remove(_sim_debug_data->gh, &dummy, NULL, debug_element_free);
 }
 
-void BKE_sim_debug_data_clear(SimDebugData *debug_data)
+void BKE_sim_debug_data_clear(void)
 {
-	if (!debug_data)
+	if (!_sim_debug_data)
 		return;
 	
-	if (debug_data->gh)
-		BLI_ghash_clear(debug_data->gh, NULL, debug_element_free);
+	if (_sim_debug_data->gh)
+		BLI_ghash_clear(_sim_debug_data->gh, NULL, debug_element_free);
 }
 
-void BKE_sim_debug_data_clear_category(SimDebugData *debug_data, const char *category)
+void BKE_sim_debug_data_clear_category(const char *category)
 {
 	int category_hash = (int)BLI_ghashutil_strhash_p(category);
 	
-	if (!debug_data)
+	if (!_sim_debug_data)
 		return;
 	
-	if (debug_data->gh) {
+	if (_sim_debug_data->gh) {
 		GHashIterator iter;
-		BLI_ghashIterator_init(&iter, debug_data->gh);
+		BLI_ghashIterator_init(&iter, _sim_debug_data->gh);
 		while(!BLI_ghashIterator_done(&iter)) {
 			SimDebugElement *elem = BLI_ghashIterator_getValue(&iter);
 			BLI_ghashIterator_step(&iter); /* removing invalidates the current iterator, so step before removing */
 			
 			if (elem->category_hash == category_hash)
-				BLI_ghash_remove(debug_data->gh, elem, NULL, debug_element_free);
+				BLI_ghash_remove(_sim_debug_data->gh, elem, NULL, debug_element_free);
 		}
 	}
 }
-
-void BKE_sim_debug_data_free(SimDebugData *debug_data)
-{
-	if (!debug_data)
-		return;
-	
-	if (debug_data->gh)
-		BLI_ghash_free(d

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list