Refactor generator to prevent duplicate reloading

This commit is contained in:
Misode
2022-05-08 16:24:39 +02:00
parent 2772d967e0
commit a432479672
13 changed files with 78 additions and 75 deletions

View File

@@ -9,7 +9,7 @@ import { BiomeSourcePreview, DecoratorPreview, DensityFunctionPreview, NoisePrev
export const HasPreview = ['dimension', 'worldgen/density_function', 'worldgen/noise', 'worldgen/noise_settings', 'worldgen/configured_feature', 'worldgen/placed_feature']
type PreviewPanelProps = {
model: DataModel | null,
model: DataModel | undefined,
version: VersionId,
id: string,
shown: boolean,

View File

@@ -52,8 +52,8 @@ interface Editor {
type SourcePanelProps = {
name: string,
model: DataModel | null,
blockStates: BlockStateRegistry | null,
model: DataModel | undefined,
blockStates: BlockStateRegistry | undefined,
doCopy?: number,
doDownload?: number,
doImport?: number,

View File

@@ -7,8 +7,8 @@ import type { BlockStateRegistry, VersionId } from '../../services'
type TreePanelProps = {
version: VersionId,
model: DataModel | null,
blockStates: BlockStateRegistry | null,
model: DataModel | undefined,
blockStates: BlockStateRegistry | undefined,
onError: (message: string) => unknown,
}
export function Tree({ version, model, blockStates, onError }: TreePanelProps) {

View File

@@ -58,14 +58,14 @@ export const BiomeSourcePreview = ({ model, data, shown, version }: PreviewProps
onLeave() {
setFocused(undefined)
},
}, [state, scale, configuredSeed, layers])
}, [version, state, scale, configuredSeed, layers])
useEffect(() => {
if (shown) {
res.current = type === 'multi_noise' ? 4 : 1
redraw()
}
}, [state, scale, configuredSeed, layers, shown])
}, [version, state, scale, configuredSeed, layers, shown])
const changeScale = (newScale: number) => {
offset.current[0] = offset.current[0] * scale / newScale

View File

@@ -11,6 +11,8 @@ export const DecoratorPreview = ({ data, version, shown }: PreviewProps) => {
const [scale, setScale] = useState(4)
const [seed, setSeed] = useState(randomSeed())
const state = JSON.stringify(data)
const { canvas, redraw } = useCanvas({
size() {
return [scale * 16, scale * 16]
@@ -18,14 +20,13 @@ export const DecoratorPreview = ({ data, version, shown }: PreviewProps) => {
async draw(img) {
decorator(data, img, { seed, version, size: [scale * 16, 128, scale * 16] })
},
})
}, [version, state, seed])
const state = JSON.stringify(data)
useEffect(() => {
if (shown) {
redraw()
}
}, [state, scale, seed, shown])
}, [version, state, scale, seed, shown])
return <>
<div class="controls preview-controls">

View File

@@ -36,7 +36,7 @@ export const DensityFunctionPreview = ({ data, shown, version }: PreviewProps) =
onLeave() {
setFocused(undefined)
},
}, [state, seed])
}, [version, state, seed])
useEffect(() => {
if (scrollInterval.current) {
@@ -51,7 +51,7 @@ export const DensityFunctionPreview = ({ data, shown, version }: PreviewProps) =
}, 100) as any
}
}
}, [state, seed, shown, autoScroll])
}, [version, state, seed, shown, autoScroll])
return <>
<div class="controls preview-controls">

View File

@@ -26,13 +26,13 @@ export const NoisePreview = ({ data, shown, version }: PreviewProps) => {
offset.current[1] = offset.current[1] + dy * 256
redraw()
},
}, [state, scale, seed])
}, [version, state, scale, seed])
useEffect(() => {
if (shown) {
redraw()
}
}, [state, scale, seed, shown])
}, [version, state, scale, seed, shown])
const changeScale = (newScale: number) => {
offset.current[0] = offset.current[0] * scale / newScale

View File

@@ -62,7 +62,7 @@ export const NoiseSettingsPreview = ({ data, shown, version }: PreviewProps) =>
}
})()
}
}, [state, seed, shown, biome, biomeScale, biomeDepth, autoScroll])
}, [version, state, seed, shown, biome, biomeScale, biomeDepth, autoScroll])
const allBiomes = useMemo(() => CachedCollections?.get('worldgen/biome') ?? [], [version])