[orx-noise] Add unseeded method to Random (#175)
This commit is contained in:
@@ -3,6 +3,7 @@ package org.openrndr.extra.noise
|
|||||||
import org.openrndr.math.Vector2
|
import org.openrndr.math.Vector2
|
||||||
import org.openrndr.math.Vector3
|
import org.openrndr.math.Vector3
|
||||||
import org.openrndr.math.Vector4
|
import org.openrndr.math.Vector4
|
||||||
|
import org.openrndr.shape.Rectangle
|
||||||
import kotlin.math.ln
|
import kotlin.math.ln
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
@@ -10,7 +11,9 @@ import kotlin.math.sqrt
|
|||||||
import org.openrndr.extra.noise.fbm as orxFbm
|
import org.openrndr.extra.noise.fbm as orxFbm
|
||||||
import kotlin.random.Random as DefaultRandom
|
import kotlin.random.Random as DefaultRandom
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deterministic Random using a seed to guarantee the same random values between iterations
|
||||||
|
*/
|
||||||
object Random {
|
object Random {
|
||||||
var rnd: DefaultRandom
|
var rnd: DefaultRandom
|
||||||
|
|
||||||
@@ -54,6 +57,30 @@ object Random {
|
|||||||
seed = "${seedBase}-${seedTracking}"
|
seed = "${seedBase}-${seedTracking}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this when you want to get non-deterministic values aka random every call
|
||||||
|
*
|
||||||
|
* @param fn
|
||||||
|
*/
|
||||||
|
fun unseeded(fn: Random.() -> Unit) {
|
||||||
|
val state = rnd
|
||||||
|
val currentSeed = seed
|
||||||
|
|
||||||
|
rnd = DefaultRandom
|
||||||
|
|
||||||
|
this.fn()
|
||||||
|
|
||||||
|
resetState()
|
||||||
|
|
||||||
|
seed = currentSeed
|
||||||
|
rnd = state
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this inside `extend` methods to get the same result between iterations
|
||||||
|
*
|
||||||
|
* @param fn
|
||||||
|
*/
|
||||||
fun isolated(fn: Random.() -> Unit) {
|
fun isolated(fn: Random.() -> Unit) {
|
||||||
val state = rnd
|
val state = rnd
|
||||||
val currentSeed = seed
|
val currentSeed = seed
|
||||||
@@ -334,5 +361,9 @@ object Random {
|
|||||||
|
|
||||||
return elements.elementAtOrNull(index) ?: elements.last()
|
return elements.elementAtOrNull(index) ?: elements.last()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun point(rect: Rectangle): Vector2 {
|
||||||
|
return rect.position(vector2(0.0, 1.0))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user