randiny
Version:
<h1 style="margin-bottom: 0">Randiny</h1> <h2 style="font-size: 14px; margin-top: 0">A pseudo random number generator, capable of generating random numbers, and noise maps.</h2>
58 lines (44 loc) • 1.37 kB
text/typescript
import RNG from "./RNG";
import RandomNumber from "./RandomNumber";
import {createNoise2D, createNoise3D} from "./SimplexNoise";
export class SimplexMap2D {
private readonly map: RandomNumber[][];
constructor(rng: RNG, width: number, height: number) {
const noise = createNoise2D(rng);
this.map = new Array(height).fill(new Array(width).fill(0)).map((e,y) => e.map((_: any, x: number) => noise(x,y)))
}
get(x: number, y: number) {
return this.map[y][x];
}
getRow(y: number) {
return this.map[y];
}
getCol(x: number): RandomNumber[] {
return this.map.map(row => row[x]);
}
getFullMap() {
return this.map;
}
}
export class SimplexMap3D {
private readonly map: RandomNumber[][][];
constructor(rng: RNG, width: number, height: number, depth: number) {
const noise = createNoise3D(rng);
this.map = new Array(height).fill(new Array(width).fill(new Array(depth).fill(0))).map((e,y) => e.map((e2: any, x: number) => e2.map((_: any, z: number) => noise(x,y,z))))
}
get(x: number, y: number, z: number) {
return this.map[y][x][z];
}
getRow(y: number) {
return this.map[y];
}
getCol(x: number): RandomNumber[][] {
return this.map.map(row => row[x]);
}
getDepths(x: number, y: number) {
return this.map[y][x];
}
getFullMap() {
return this.map;
}
}