diff --git a/renderer/viewer/three/worldrendererThree.ts b/renderer/viewer/three/worldrendererThree.ts index 0634d536..0c84a030 100644 --- a/renderer/viewer/three/worldrendererThree.ts +++ b/renderer/viewer/three/worldrendererThree.ts @@ -458,7 +458,7 @@ export class WorldRendererThree extends WorldRendererCommon { debugChunksVisibilityOverride () { const { chunksRenderAboveOverride, chunksRenderBelowOverride, chunksRenderDistanceOverride, chunksRenderAboveEnabled, chunksRenderBelowEnabled, chunksRenderDistanceEnabled } = this.reactiveDebugParams - const baseY = this.cameraSectionPos.y + const baseY = this.cameraSectionPos.y * 16 if ( chunksRenderAboveOverride !== undefined || @@ -469,11 +469,11 @@ export class WorldRendererThree extends WorldRendererCommon { const [x, y, z] = key.split(',').map(Number) const isVisible = // eslint-disable-next-line no-constant-binary-expression, sonarjs/no-redundant-boolean - chunksRenderAboveEnabled && chunksRenderAboveOverride !== undefined ? y >= (baseY + chunksRenderAboveOverride) : true && + (chunksRenderAboveEnabled && chunksRenderAboveOverride !== undefined) ? y <= (baseY + chunksRenderAboveOverride) : true && // eslint-disable-next-line @stylistic/indent-binary-ops, no-constant-binary-expression, sonarjs/no-redundant-boolean - chunksRenderBelowEnabled && chunksRenderBelowOverride !== undefined ? y <= (baseY + chunksRenderBelowOverride) : true && + (chunksRenderBelowEnabled && chunksRenderBelowOverride !== undefined) ? y >= (baseY - chunksRenderBelowOverride) : true && // eslint-disable-next-line @stylistic/indent-binary-ops - chunksRenderDistanceEnabled && chunksRenderDistanceOverride !== undefined ? Math.abs(y - baseY) <= chunksRenderDistanceOverride : true + (chunksRenderDistanceEnabled && chunksRenderDistanceOverride !== undefined) ? Math.abs(y - baseY) <= chunksRenderDistanceOverride : true object.visible = isVisible } @@ -482,6 +482,7 @@ export class WorldRendererThree extends WorldRendererCommon { render (sizeChanged = false) { if (this.reactiveDebugParams.stopRendering) return + this.debugChunksVisibilityOverride() const start = performance.now() this.lastRendered = performance.now() this.cursorBlock.render() diff --git a/src/optionsGuiScheme.tsx b/src/optionsGuiScheme.tsx index 7f4c34ab..c74a72d8 100644 --- a/src/optionsGuiScheme.tsx +++ b/src/optionsGuiScheme.tsx @@ -109,6 +109,9 @@ export const guiOptionsScheme: { 'none' ], }, + rendererPerfDebugOverlay: { + text: 'Performance Debug', + } }, { custom () { diff --git a/src/optionsStorage.ts b/src/optionsStorage.ts index a0c995a0..88e86817 100644 --- a/src/optionsStorage.ts +++ b/src/optionsStorage.ts @@ -106,6 +106,7 @@ const defaultOptions = { vrSupport: true, // doesn't directly affect the VR mode, should only disable the button which is annoying to android users vrPageGameRendering: false, renderDebug: 'basic' as 'none' | 'advanced' | 'basic', + rendererPerfDebugOverlay: false, // advanced bot options autoRespawn: false, diff --git a/src/react/RendererDebugMenu.tsx b/src/react/RendererDebugMenu.tsx index 415a8c93..2e6030c1 100644 --- a/src/react/RendererDebugMenu.tsx +++ b/src/react/RendererDebugMenu.tsx @@ -1,6 +1,7 @@ import { WorldRendererCommon } from 'renderer/viewer/lib/worldrendererCommon' import { useState } from 'react' import { useSnapshot } from 'valtio' +import { options } from '../optionsStorage' import Screen from './Screen' import Button from './Button' import Slider from './Slider' @@ -11,11 +12,13 @@ export default () => { const { reactiveDebugParams } = worldRenderer const { chunksRenderAboveEnabled, chunksRenderBelowEnabled, chunksRenderDistanceEnabled, chunksRenderAboveOverride, chunksRenderBelowOverride, chunksRenderDistanceOverride, stopRendering, disableEntities } = useSnapshot(reactiveDebugParams) - + const { rendererPerfDebugOverlay } = useSnapshot(options) // Helper to round values to nearest step const roundToStep = (value: number, step: number) => Math.round(value / step) * step + if (!rendererPerfDebugOverlay) return null + return

Rendering Controls

@@ -47,6 +50,7 @@ export default () => { min={0} max={256} value={chunksRenderAboveOverride ?? 0} + style={{ width: '100%', }} updateValue={(value) => { const roundedValue = roundToStep(value, 16) reactiveDebugParams.chunksRenderAboveOverride = roundedValue @@ -70,6 +74,7 @@ export default () => { label="Chunks Below" min={0} max={256} + style={{ width: '100%', }} value={chunksRenderBelowOverride ?? 0} updateValue={(value) => { const roundedValue = roundToStep(value, 16) @@ -81,7 +86,7 @@ export default () => { />
-
+ {/*
+
*/}
} diff --git a/src/react/button.module.css b/src/react/button.module.css index 677a1b44..e940c224 100644 --- a/src/react/button.module.css +++ b/src/react/button.module.css @@ -4,6 +4,7 @@ position: relative; width: 200px; min-height: calc(20px * var(--scale)); + max-height: calc(20px * var(--scale)); font-family: minecraft, mojangles, monospace; font-size: 10px; color: white;