feat(3d-nds): lag detection

This commit is contained in:
2026-02-24 16:17:43 +01:00
parent 187cc8d574
commit 2d4210b031
6 changed files with 78 additions and 2 deletions

View File

@@ -195,7 +195,12 @@ watch(
{ immediate: true },
);
const { onRender } = useLoop();
const { onRender, onBeforeRender } = useLoop();
const LAG_FPS_THRESHOLD = 440;
const LAG_DURATION_SECS = 1;
let lagSeconds = 0;
let lagCheckDone = false;
const HINT_SPRITE_SCALE = 2;
const HINT_SPRITE_DPR = 4;
@@ -337,10 +342,30 @@ useKeyUp(({ ndsButton }) => {
}
});
onRender(({ delta }) => {
// lag detection
onBeforeRender(({ delta }) => {
if (!lagCheckDone) {
const fps = 1 / delta;
if (fps < LAG_FPS_THRESHOLD) {
lagSeconds += delta;
if (lagSeconds >= LAG_DURATION_SECS) {
lagCheckDone = true;
app.lagDetected = true;
}
} else {
lagSeconds = 0;
}
}
});
// upate screens
onRender(() => {
if (topScreenTexture) topScreenTexture.needsUpdate = true;
if (bottomScreenTexture) bottomScreenTexture.needsUpdate = true;
});
// update physical buttons
onBeforeRender(({ delta }) => {
// cross
const crossButton = meshes.get(CROSS_BUTTON);
if (crossButton) {