16 lines
667 B
JavaScript
16 lines
667 B
JavaScript
// Browser-only clocks; simulation code stays usable without a browser or a clock.
|
|
let PERF_MARKS = false, PERF_FRAME = null;
|
|
const perfMarks = {}, perfTimes = {}, perfLast = {};
|
|
for (const name of ['drawWorld', 'computeLight', 'simMove', 'heatPass']) {
|
|
const original = window[name];
|
|
window[name] = function (...args) {
|
|
if (!SET.showPerf && !PERF_MARKS) return original.apply(this, args);
|
|
const start = performance.now();
|
|
const result = original.apply(this, args);
|
|
const ms = performance.now() - start;
|
|
perfLast[name] = ms;
|
|
if (name !== 'computeLight') perfTimes[name] = (perfTimes[name] || 0) * 0.9 + ms * 0.1;
|
|
return result;
|
|
};
|
|
}
|