[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