[Bf-blender-cvs] [a9cfd8c9106] blender2.8: Cleanup: get rid of global RNG usage in transform code.

Bastien Montagne noreply at git.blender.org
Tue Jun 12 17:00:42 CEST 2018


Commit: a9cfd8c910687e5e18e34339a5a33fb73f167421
Author: Bastien Montagne
Date:   Tue Jun 12 17:00:07 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa9cfd8c910687e5e18e34339a5a33fb73f167421

Cleanup: get rid of global RNG usage in transform code.

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

M	source/blender/editors/transform/transform.h
M	source/blender/editors/transform/transform_generics.c

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

diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 419f400df53..df2fa1da43d 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -65,6 +65,7 @@ struct wmEvent;
 struct wmTimer;
 struct ARegion;
 struct ReportList;
+struct RNG;
 struct EditBone;
 struct RenderEngineType;
 struct SnapObjectContext;
@@ -536,6 +537,9 @@ typedef struct TransInfo {
 	void		*draw_handle_pixel;
 	void		*draw_handle_cursor;
 
+	/** Currently only used for random curve of proportional editing. */
+	struct RNG *rng;
+
 	/** Typically for mode settings. */
 	TransCustomDataContainer custom;
 } TransInfo;
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 8bef63dba1a..5ff1ddb6ac5 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -58,6 +58,8 @@
 #include "BLI_rand.h"
 #include "BLI_utildefines.h"
 
+#include "PIL_time.h"
+
 #include "BLT_translation.h"
 
 #include "RNA_access.h"
@@ -1695,6 +1697,10 @@ void postTrans(bContext *C, TransInfo *t)
 		MEM_freeN(t->mouse.data);
 	}
 
+	if (t->rng != NULL) {
+		BLI_rng_free(t->rng);
+	}
+
 	freeSnapping(t);
 }
 
@@ -2163,7 +2169,12 @@ void calculatePropRatio(TransInfo *t)
 							td->factor = sqrtf(2 * dist - dist * dist);
 							break;
 						case PROP_RANDOM:
-							td->factor = BLI_frand() * dist;
+							if (t->rng == NULL) {
+								/* Lazy initialization. */
+								uint rng_seed = (uint)(PIL_check_seconds_timer_i() & UINT_MAX);
+								t->rng = BLI_rng_new(rng_seed);
+							}
+							td->factor = BLI_rng_get_float(t->rng) * dist;
 							break;
 						case PROP_INVSQUARE:
 							td->factor = dist * (2.0f - dist);



More information about the Bf-blender-cvs mailing list