mirror of
https://github.com/LinoSchmidt/StickExporterTX.git
synced 2026-03-21 01:51:15 +01:00
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
import {setProgress} from "../renderer";
|
|
import {getLogSize} from "./logReader";
|
|
import {getInOutSettings} from "./settings";
|
|
import { setRenderDisplayProgress, setPastTimeNow, setRemainingTimeNow } from "./ui/renderingPage";
|
|
|
|
const estimatedRenderPortion = 0.97;
|
|
|
|
const renderInfo = {
|
|
time: "0min 0sec",
|
|
startTime: 0,
|
|
endTime: 0
|
|
}
|
|
|
|
let logPortionList:number[] = [];
|
|
let currentLogPortion = 0;
|
|
|
|
function setRenderProgress(log:number, init:boolean, frameCount:number, frame:number) {
|
|
let progress = 0;
|
|
if(init) {
|
|
progress = logPortionList[log-1] * (frame / frameCount * (1 - estimatedRenderPortion)) + currentLogPortion;
|
|
} else {
|
|
progress = logPortionList[log-1] * (frame / frameCount * estimatedRenderPortion + (1 - estimatedRenderPortion)) + currentLogPortion;
|
|
}
|
|
setProgress(progress);
|
|
setRenderDisplayProgress(parseFloat((progress*100).toFixed(2)));
|
|
|
|
const timeNow = new Date().getTime();
|
|
const timeDiff = timeNow - renderInfo.startTime;
|
|
let timeDiffSeconds = timeDiff / 1000;
|
|
let timeDiffMinutes = 0;
|
|
while(timeDiffSeconds > 60) {
|
|
timeDiffMinutes++;
|
|
timeDiffSeconds -= 60;
|
|
}
|
|
renderInfo.time = timeDiffMinutes + "m " + timeDiffSeconds.toFixed(0) + "s";
|
|
setPastTimeNow(renderInfo.time);
|
|
|
|
if(progress > 0) {
|
|
const timeRemaining = (timeDiff / progress) * (1 - progress);
|
|
timeDiffSeconds = timeRemaining / 1000;
|
|
timeDiffMinutes = 0;
|
|
while(timeDiffSeconds > 60) {
|
|
timeDiffMinutes++;
|
|
timeDiffSeconds -= 60;
|
|
}
|
|
setRemainingTimeNow(timeDiffMinutes + "m " + timeDiffSeconds.toFixed(0) + "s");
|
|
}
|
|
}
|
|
|
|
function resetRenderProgress() {
|
|
logPortionList = [];
|
|
currentLogPortion = 0;
|
|
|
|
const logSizeList:number[] = [];
|
|
getInOutSettings().logs.forEach(function (value, index) {
|
|
logSizeList.push(getLogSize(index));
|
|
});
|
|
|
|
let fullLogSize = 0;
|
|
for(let i = 0; i < logSizeList.length; i++) {
|
|
fullLogSize += logSizeList[i];
|
|
}
|
|
|
|
logSizeList.forEach(function (value) {
|
|
logPortionList.push(value / fullLogSize);
|
|
});
|
|
|
|
setPastTimeNow("0min 0sec");
|
|
setRemainingTimeNow("calculating...");
|
|
}
|
|
|
|
function setLog(log:number) {
|
|
currentLogPortion += logPortionList[log-2];
|
|
}
|
|
|
|
function stopProgress() {
|
|
renderInfo.endTime = new Date().getTime();
|
|
}
|
|
|
|
function startProgress() {
|
|
renderInfo.startTime = new Date().getTime();
|
|
resetRenderProgress();
|
|
}
|
|
|
|
export {
|
|
setRenderProgress,
|
|
resetRenderProgress,
|
|
setLog,
|
|
stopProgress,
|
|
startProgress,
|
|
renderInfo
|
|
} |