You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.7 KiB
46 lines
1.7 KiB
import { BaseHUDPart } from "../base_hud_part";
|
|
import { makeDiv, round3Digits, round2Digits } from "../../../core/utils";
|
|
import { Math_round } from "../../../core/builtins";
|
|
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
|
import { KEYMAPPINGS } from "../../key_action_mapper";
|
|
|
|
export class HUDDebugInfo extends BaseHUDPart {
|
|
createElements(parent) {
|
|
this.element = makeDiv(parent, "ingame_HUD_DebugInfo", []);
|
|
|
|
this.tickRateElement = makeDiv(this.element, null, ["tickRate"], "Ticks /s: 120");
|
|
this.fpsElement = makeDiv(this.element, null, ["fps"], "FPS: 60");
|
|
this.tickDurationElement = makeDiv(this.element, null, ["tickDuration"], "Update time: 0.5ms");
|
|
}
|
|
|
|
initialize() {
|
|
this.lastTick = 0;
|
|
|
|
this.visible = false;
|
|
this.domAttach = new DynamicDomAttach(this.root, this.element);
|
|
|
|
this.root.keyMapper.getBinding(KEYMAPPINGS.ingame.toggleFPSInfo).add(() => this.toggle());
|
|
}
|
|
|
|
toggle() {
|
|
this.visible = !this.visible;
|
|
this.domAttach.update(this.visible);
|
|
}
|
|
|
|
update() {
|
|
const now = this.root.time.realtimeNow();
|
|
if (now - this.lastTick > 0.25 && this.visible) {
|
|
this.lastTick = now;
|
|
this.tickRateElement.innerText = "Tickrate: " + this.root.dynamicTickrate.currentTickRate;
|
|
this.fpsElement.innerText =
|
|
"FPS: " +
|
|
Math_round(this.root.dynamicTickrate.averageFps) +
|
|
" (" +
|
|
round2Digits(1000 / this.root.dynamicTickrate.averageFps) +
|
|
" ms)";
|
|
this.tickDurationElement.innerText =
|
|
"Tick Dur: " + round3Digits(this.root.dynamicTickrate.averageTickDuration) + "ms";
|
|
}
|
|
}
|
|
}
|