OpenSimplexNoise constructor
OpenSimplexNoise([
- int seed = 0
Implementation
factory OpenSimplexNoise([int seed = 0]) {
List<int> perm = new List<int>.filled(256, 0);
List<int> source = new List<int>.filled(256, 0);
for (int i = 0; i < 256; i++) source[i] = i;
// The following parsers may seem silly but these parses allow 64-bit integers to be initialized
// when running in an environment which allows 64-bit integers, such as the console.
// In a 64-bit environment this Open Simplex Noise gets the same results as any other.
// However, in JS there are only 53-bit integers and the dart compiler complains
// about this value being used, so the `int.parse` will return a valid 59-bit number which
// will result in a functional Open Simplex Noise but with different results from others.
final int seedMul = int.parse("6364136223846793005");
final int seedAdd = int.parse("1442695040888963407");
seed = (seed * seedMul + seedAdd).toSigned(64);
seed = (seed * seedMul + seedAdd).toSigned(64);
seed = (seed * seedMul + seedAdd).toSigned(64);
for (int i = 255; i >= 0; i--) {
seed = (seed * seedMul + seedAdd).toSigned(64);
int r = ((seed + 31) % (i + 1));
if (r < 0) r += (i + 1);
perm[i] = source[r];
source[r] = source[i];
}
return new OpenSimplexNoise.fromPerm(perm);
}