improve performance of debug overlay
This commit is contained in:
@@ -46,16 +46,18 @@ export default class IngameOverlay extends Gui {
|
|||||||
// Render debug overlay on tick
|
// Render debug overlay on tick
|
||||||
if (this.minecraft.settings.debugOverlay) {
|
if (this.minecraft.settings.debugOverlay) {
|
||||||
let stack = this.window.canvasDebug.getContext('2d');
|
let stack = this.window.canvasDebug.getContext('2d');
|
||||||
let fastUpdate = this.minecraft.player.isMoving() && this.minecraft.fps > 30;
|
|
||||||
|
|
||||||
// Render debug overlay each tick if the player is moving
|
// Render debug overlay each tick if the player is moving
|
||||||
if (this.ticksRendered % (fastUpdate ? 2 : 20) === 0) {
|
if (this.ticksRendered % 10 === 0) {
|
||||||
// Clear debug canvas
|
// Clear debug canvas
|
||||||
stack.clearRect(0, 0, this.window.width, this.window.height);
|
stack.clearRect(0, 0, this.window.width, this.window.height);
|
||||||
|
|
||||||
// Render debug information
|
// Render debug information
|
||||||
this.renderLeftDebugOverlay(stack);
|
this.renderLeftDebugOverlay(stack);
|
||||||
this.renderRightDebugOverlay(stack);
|
this.renderRightDebugOverlay(stack);
|
||||||
|
} else if (this.minecraft.player.isMoving()) {
|
||||||
|
// Render debug information
|
||||||
|
this.renderLeftDebugOverlay(stack, [5, 6, 7, 8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.ticksRendered++;
|
this.ticksRendered++;
|
||||||
@@ -94,7 +96,7 @@ export default class IngameOverlay extends Gui {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderLeftDebugOverlay(stack) {
|
renderLeftDebugOverlay(stack, filters = []) {
|
||||||
let world = this.minecraft.world;
|
let world = this.minecraft.world;
|
||||||
let player = this.minecraft.player;
|
let player = this.minecraft.player;
|
||||||
let worldRenderer = this.minecraft.worldRenderer;
|
let worldRenderer = this.minecraft.worldRenderer;
|
||||||
@@ -196,10 +198,20 @@ export default class IngameOverlay extends Gui {
|
|||||||
|
|
||||||
// Draw lines
|
// Draw lines
|
||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
if (lines[i].length === 0) {
|
if (lines[i].length === 0 || filters.length !== 0 && !filters.includes(i)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear the line
|
||||||
|
if (filters.length !== 0) {
|
||||||
|
stack.clearRect(
|
||||||
|
1,
|
||||||
|
1 + FontRenderer.FONT_HEIGHT * i,
|
||||||
|
this.getStringWidth(stack, lines[i]) + 1,
|
||||||
|
FontRenderer.FONT_HEIGHT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Draw background
|
// Draw background
|
||||||
this.drawRect(stack,
|
this.drawRect(stack,
|
||||||
1,
|
1,
|
||||||
|
|||||||
Reference in New Issue
Block a user