()
| 280 | requestAnimationFrame(engineUpdate); |
| 281 | |
| 282 | function renderFrame() |
| 283 | { |
| 284 | if (headlessMode) return; |
| 285 | |
| 286 | // canvas must be updated before rendering |
| 287 | if (!wasUpdated) |
| 288 | updateCanvas(); |
| 289 | |
| 290 | // render the game and objects |
| 291 | enginePreRender(); |
| 292 | gameRender(); |
| 293 | engineObjects.sort((a,b)=> a.renderOrder - b.renderOrder); |
| 294 | for (const o of engineObjects) |
| 295 | o.destroyed || o.render(); |
| 296 | |
| 297 | // post rendering |
| 298 | gameRenderPost(); |
| 299 | pluginList.forEach(plugin=>plugin.render?.()); |
| 300 | inputRender(); |
| 301 | debugRender(); |
| 302 | glFlush(); |
| 303 | debugRenderPost(); |
| 304 | drawCount = 0; |
| 305 | primitiveCount = 0; |
| 306 | } |
| 307 | } |
| 308 | |
| 309 | function updateCanvas() |
no test coverage detected