Loading .env→.env.example +0 −0 File moved. View file .gitignore +2 −1 Original line number Diff line number Diff line Loading @@ -2,3 +2,4 @@ data frames node_modules out.mp4 .env No newline at end of file src/index.ts +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ client.connect().then(async () => { const start = startDate.getTime(); const end = endDate.getTime(); const framesPerWorker = Math.floor((end - start) / WORKER_COUNT); const framesPerWorker = Math.floor((end - start) / (WORKER_COUNT - 1)); const frameStartIncrement = Math.floor(framesPerWorker / MS_PER_FRAME); const framesToGenerate = Math.floor((end - start) / MS_PER_FRAME); console.log(framesToGenerate + " frames need to be generated"); Loading src/render_worker.ts +19 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ type Pixel = { }; let workerId: number; let assigned = false; let workerStart: Date; // date the worker should start at const database = client.connect(); Loading @@ -42,6 +44,14 @@ parentPort?.on("message", (msg: Message) => { workerId = msg.workerId; break; case "assignment": { if (assigned) { log("I RECEIVED ANOTHER ASSIGNMENT, THIS SHOULDN'T HAPPEN"); return; } assigned = true; workerStart = new Date(msg.start); database.then(async () => { const start = Date.now(); const framesToGenerate = (msg.end - msg.start) / msg.step; Loading Loading @@ -98,15 +108,18 @@ const generateFrame = async (frameId: number, pixels: Pixel[]) => { prevFrame.height ); } else { // check if pixels are needing to be drawn, if not we can skip let startTime: Date; if (pixels.length > 0) { startTime = new Date(pixels[0].date); } else { startTime = workerStart; } // no previous frame exists, guess we will have to load from the database const previousPixels = await query.existingPixelsBeforeTime( new Date(pixels[0].date) ); const previousPixels = await query.existingPixelsBeforeTime(startTime); pixels = [...dbPixelsToLog(previousPixels.rows), ...pixels]; } } const pixelScale = [ OUTPUT_SIZE[0] / CANVAS_SIZE[0], Loading Loading
.gitignore +2 −1 Original line number Diff line number Diff line Loading @@ -2,3 +2,4 @@ data frames node_modules out.mp4 .env No newline at end of file
src/index.ts +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ client.connect().then(async () => { const start = startDate.getTime(); const end = endDate.getTime(); const framesPerWorker = Math.floor((end - start) / WORKER_COUNT); const framesPerWorker = Math.floor((end - start) / (WORKER_COUNT - 1)); const frameStartIncrement = Math.floor(framesPerWorker / MS_PER_FRAME); const framesToGenerate = Math.floor((end - start) / MS_PER_FRAME); console.log(framesToGenerate + " frames need to be generated"); Loading
src/render_worker.ts +19 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ type Pixel = { }; let workerId: number; let assigned = false; let workerStart: Date; // date the worker should start at const database = client.connect(); Loading @@ -42,6 +44,14 @@ parentPort?.on("message", (msg: Message) => { workerId = msg.workerId; break; case "assignment": { if (assigned) { log("I RECEIVED ANOTHER ASSIGNMENT, THIS SHOULDN'T HAPPEN"); return; } assigned = true; workerStart = new Date(msg.start); database.then(async () => { const start = Date.now(); const framesToGenerate = (msg.end - msg.start) / msg.step; Loading Loading @@ -98,15 +108,18 @@ const generateFrame = async (frameId: number, pixels: Pixel[]) => { prevFrame.height ); } else { // check if pixels are needing to be drawn, if not we can skip let startTime: Date; if (pixels.length > 0) { startTime = new Date(pixels[0].date); } else { startTime = workerStart; } // no previous frame exists, guess we will have to load from the database const previousPixels = await query.existingPixelsBeforeTime( new Date(pixels[0].date) ); const previousPixels = await query.existingPixelsBeforeTime(startTime); pixels = [...dbPixelsToLog(previousPixels.rows), ...pixels]; } } const pixelScale = [ OUTPUT_SIZE[0] / CANVAS_SIZE[0], Loading