Make frame times more consistent
This commit is contained in:
parent
269eaf0a04
commit
a668b8a4c7
18
src/main.js
18
src/main.js
|
|
@ -73,6 +73,7 @@ let fileExportPath = undefined
|
||||||
let state = "normal"
|
let state = "normal"
|
||||||
|
|
||||||
let playing = false
|
let playing = false
|
||||||
|
let lastFrameTime;
|
||||||
|
|
||||||
let clipboard = []
|
let clipboard = []
|
||||||
|
|
||||||
|
|
@ -2747,6 +2748,7 @@ function playPause() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lastFrameTime = performance.now()
|
||||||
advanceFrame()
|
advanceFrame()
|
||||||
} else {
|
} else {
|
||||||
for (let audioLayer of context.activeObject.audioLayers) {
|
for (let audioLayer of context.activeObject.audioLayers) {
|
||||||
|
|
@ -2762,11 +2764,21 @@ function playPause() {
|
||||||
function advanceFrame() {
|
function advanceFrame() {
|
||||||
context.activeObject.advanceFrame()
|
context.activeObject.advanceFrame()
|
||||||
updateLayers()
|
updateLayers()
|
||||||
updateMenu()
|
|
||||||
updateUI()
|
updateUI()
|
||||||
if (playing) {
|
if (playing) {
|
||||||
if (context.activeObject.currentFrameNum < context.activeObject.maxFrame - 1) {
|
if (context.activeObject.currentFrameNum < context.activeObject.maxFrame - 1) {
|
||||||
setTimeout(advanceFrame, 1000/config.framerate)
|
const now = performance.now()
|
||||||
|
const elapsedTime = now - lastFrameTime;
|
||||||
|
|
||||||
|
// Calculate the time remaining for the next frame
|
||||||
|
const targetTimePerFrame = 1000 / config.framerate;
|
||||||
|
const timeToWait = Math.max(0, targetTimePerFrame - elapsedTime); // Ensure no negative timeout
|
||||||
|
// const timeToWait = 1000 / config.framerate
|
||||||
|
console.log(timeToWait)
|
||||||
|
|
||||||
|
// Update lastFrameTime to the current time
|
||||||
|
lastFrameTime = now + timeToWait;
|
||||||
|
setTimeout(advanceFrame, timeToWait)
|
||||||
} else {
|
} else {
|
||||||
playing = false
|
playing = false
|
||||||
for (let audioLayer of context.activeObject.audioLayers) {
|
for (let audioLayer of context.activeObject.audioLayers) {
|
||||||
|
|
@ -2776,6 +2788,8 @@ function advanceFrame() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
updateMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue