diff --git a/src/app/Utils.ts b/src/app/Utils.ts index 5b77d337..e68a04cd 100644 --- a/src/app/Utils.ts +++ b/src/app/Utils.ts @@ -15,6 +15,15 @@ export function hashString(s: string) { return (s ?? '').split('').reduce((a, b) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a }, 0) } +export function stringToColor(str: string): [number, number, number] { + const h = Math.abs(hashString(str)) + return [h % 256, (h >> 8) % 256, (h >> 16) % 256] +} + +export function clamp(a: number, b: number, c: number) { + return Math.max(a, Math.min(b, c)) +} + export function clampedLerp(a: number, b: number, c: number): number { if (c < 0) { return a; diff --git a/src/app/preview/BiomeNoisePreview.ts b/src/app/preview/BiomeNoisePreview.ts index efc4f115..42f16711 100644 --- a/src/app/preview/BiomeNoisePreview.ts +++ b/src/app/preview/BiomeNoisePreview.ts @@ -1,9 +1,9 @@ import { DataModel, Path, ModelPath } from "@mcschema/core" import { Octicon } from "../components/Octicon" import { Property } from "../state/Property" -import { hashString, hexId } from "../Utils" +import { hexId, stringToColor } from "../Utils" import { View } from "../views/View" -import { NormalNoise } from './math/NormalNoise' +import { NormalNoise } from './noise/NormalNoise' import { Preview } from './Preview' const LOCAL_STORAGE_BIOME_COLORS = 'biome_colors' @@ -110,7 +110,7 @@ export class BiomeNoisePreview extends Preview { getBiomeColor(biome: string): number[] { const color = this.biomeColors.get()[biome] if (color === undefined) { - return this.colorFromBiome(biome) + return stringToColor(biome) } return color } @@ -124,9 +124,4 @@ export class BiomeNoisePreview extends Preview { getBiomeHex(biome: string): string { return '#' + this.getBiomeColor(biome).map(e => e.toString(16).padStart(2, '0')).join('') } - - private colorFromBiome(biome: string): number[] { - const h = Math.abs(hashString(biome)) - return [h % 256, (h >> 8) % 256, (h >> 16) % 256] - } } diff --git a/src/app/preview/NoiseSettingsPreview.ts b/src/app/preview/NoiseSettingsPreview.ts index 586aa34f..87fd8c05 100644 --- a/src/app/preview/NoiseSettingsPreview.ts +++ b/src/app/preview/NoiseSettingsPreview.ts @@ -2,7 +2,7 @@ import { DataModel, Path, ModelPath } from "@mcschema/core" import { Preview } from './Preview' import { toggleMenu, View } from '../views/View' import { Octicon } from '../components/Octicon' -import { NoiseChunkGenerator } from './NoiseChunkGenerator' +import { NoiseChunkGenerator } from './noise/NoiseChunkGenerator' export class NoiseSettingsPreview extends Preview { private width: number = 512 diff --git a/src/app/preview/math/ImprovedNoise.ts b/src/app/preview/noise/ImprovedNoise.ts similarity index 100% rename from src/app/preview/math/ImprovedNoise.ts rename to src/app/preview/noise/ImprovedNoise.ts diff --git a/src/app/preview/NoiseChunkGenerator.ts b/src/app/preview/noise/NoiseChunkGenerator.ts similarity index 97% rename from src/app/preview/NoiseChunkGenerator.ts rename to src/app/preview/noise/NoiseChunkGenerator.ts index 819f1534..fc471143 100644 --- a/src/app/preview/NoiseChunkGenerator.ts +++ b/src/app/preview/noise/NoiseChunkGenerator.ts @@ -1,5 +1,5 @@ -import { PerlinNoise } from './math/PerlinNoise' -import { clampedLerp, hexId, lerp2 } from '../Utils' +import { PerlinNoise } from './PerlinNoise' +import { clampedLerp, hexId, lerp2 } from '../../Utils' export class NoiseChunkGenerator { private minLimitPerlinNoise: PerlinNoise diff --git a/src/app/preview/math/NormalNoise.ts b/src/app/preview/noise/NormalNoise.ts similarity index 100% rename from src/app/preview/math/NormalNoise.ts rename to src/app/preview/noise/NormalNoise.ts diff --git a/src/app/preview/math/PerlinNoise.ts b/src/app/preview/noise/PerlinNoise.ts similarity index 100% rename from src/app/preview/math/PerlinNoise.ts rename to src/app/preview/noise/PerlinNoise.ts