mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-24 07:37:10 +00:00
Fix noise settings preview, use the terrain shaper
This commit is contained in:
@@ -106,7 +106,7 @@ function calculateState(data: any, octaves: NoiseOctaves, shaper: TerrainShaper)
|
||||
return JSON.stringify([data, octaves, shaper.toJson()])
|
||||
}
|
||||
|
||||
function getOctaves(obj: any): NoiseOctaves {
|
||||
export function getOctaves(obj: any): NoiseOctaves {
|
||||
if (typeof obj !== 'string') {
|
||||
const settings = NoiseGeneratorSettings.fromJson(DataModel.unwrapLists(obj))
|
||||
obj = settings.noise.densityFactor === 0 && settings.noise.densityOffset === -0.030078125
|
||||
@@ -145,7 +145,7 @@ function getOctaves(obj: any): NoiseOctaves {
|
||||
}
|
||||
}
|
||||
|
||||
function getShaper(obj: any): TerrainShaper {
|
||||
export function getShaper(obj: any): TerrainShaper {
|
||||
if (typeof obj === 'string') {
|
||||
switch (obj.replace(/^minecraft:/, '')) {
|
||||
case 'overworld':
|
||||
|
||||
@@ -10,18 +10,11 @@ import { randomSeed } from '../../Utils'
|
||||
export const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProps) => {
|
||||
const loc = locale.bind(null, lang)
|
||||
const [seed, setSeed] = useState(randomSeed())
|
||||
const [biomeFactor, setBiomeFactor] = useState(0.2)
|
||||
const [biomeOffset, setBiomeOffset] = useState(0.1)
|
||||
const [biomePeaks, setBiomePeaks] = useState(0)
|
||||
const [biomeScale, setBiomeScale] = useState(0.2)
|
||||
const [biomeDepth, setBiomeDepth] = useState(0.1)
|
||||
const [focused, setFocused] = useState<string | undefined>(undefined)
|
||||
const offset = useRef(0)
|
||||
const state = JSON.stringify([data, biomeFactor, biomeOffset, biomePeaks])
|
||||
|
||||
const hasPeaks = checkVersion(version, '1.18')
|
||||
useEffect(() => {
|
||||
setBiomeFactor(hasPeaks ? 600 : 0.2)
|
||||
setBiomeOffset(hasPeaks ? 0.05 : 0.1)
|
||||
}, [hasPeaks])
|
||||
const state = JSON.stringify([data, biomeScale, biomeDepth])
|
||||
|
||||
const size = data?.noise?.height ?? 256
|
||||
const { canvas, redraw } = useCanvas({
|
||||
@@ -29,7 +22,7 @@ export const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProp
|
||||
return [size, size]
|
||||
},
|
||||
async draw(img) {
|
||||
const options = { biomeOffset, biomeFactor, biomePeaks, offset: offset.current, width: img.width, seed, version }
|
||||
const options = { biomeDepth, biomeScale, offset: offset.current, width: img.width, seed, version }
|
||||
noiseSettings(data, img, options)
|
||||
},
|
||||
async onDrag(dx) {
|
||||
@@ -54,16 +47,12 @@ export const NoiseSettingsPreview = ({ lang, data, shown, version }: PreviewProp
|
||||
return <>
|
||||
<div class="controls">
|
||||
{focused && <Btn label={`Y = ${focused}`} class="no-pointer" />}
|
||||
<BtnMenu icon="gear" tooltip={locale(lang, 'terrain_settings')}>
|
||||
{hasPeaks ? <>
|
||||
<BtnInput label={loc('preview.factor')} value={`${biomeFactor}`} onChange={v => setBiomeFactor(Number(v))} />
|
||||
<BtnInput label={loc('preview.offset')} value={`${biomeOffset}`} onChange={v => setBiomeOffset(Number(v))} />
|
||||
<BtnInput label={loc('preview.peaks')} value={`${biomePeaks}`} onChange={v => setBiomePeaks(Number(v))} />
|
||||
</> : <>
|
||||
<BtnInput label={loc('preview.scale')} value={`${biomeFactor}`} onChange={v => setBiomeFactor(Number(v))} />
|
||||
<BtnInput label={loc('preview.depth')} value={`${biomeOffset}`} onChange={v => setBiomeOffset(Number(v))} />
|
||||
</>}
|
||||
</BtnMenu>
|
||||
{checkVersion(version, undefined, '1.17') &&
|
||||
<BtnMenu icon="gear" tooltip={locale(lang, 'terrain_settings')}>
|
||||
<BtnInput label={loc('preview.scale')} value={`${biomeScale}`} onChange={v => setBiomeScale(Number(v))} />
|
||||
<BtnInput label={loc('preview.depth')} value={`${biomeDepth}`} onChange={v => setBiomeDepth(Number(v))} />
|
||||
</BtnMenu>
|
||||
}
|
||||
<Btn icon="sync" tooltip={locale(lang, 'generate_new_seed')}
|
||||
onClick={() => setSeed(randomSeed())} />
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user