mirror of
https://github.com/liabru/matter-js.git
synced 2025-01-31 18:14:55 -05:00
added updates per frame to Matter.Render debug
This commit is contained in:
parent
3e61951ab5
commit
a5b57670a3
2 changed files with 25 additions and 7 deletions
|
@ -53,7 +53,8 @@ var Body = require('../body/Body');
|
||||||
timestamp: 0,
|
timestamp: 0,
|
||||||
timeScale: 1,
|
timeScale: 1,
|
||||||
lastDelta: 0,
|
lastDelta: 0,
|
||||||
lastElapsed: 0
|
lastElapsed: 0,
|
||||||
|
lastUpdatesPerFrame: 0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* The `Matter.Render` module is a simple canvas based renderer for visualising instances of `Matter.Engine`.
|
* The `Matter.Render` module is a lightweight, optional utility which provides a simple canvas based renderer for visualising instances of `Matter.Engine`.
|
||||||
* It is intended for development and debugging purposes, but may also be suitable for simple games.
|
* It is intended for development and debugging purposes, but may also be suitable for simple games.
|
||||||
* It includes a number of drawing options including wireframe, vector with support for sprites and viewports.
|
* It includes a number of drawing options including wireframe, vector with support for sprites and viewports.
|
||||||
*
|
*
|
||||||
|
@ -61,6 +61,7 @@ var Mouse = require('../core/Mouse');
|
||||||
timestampElapsedHistory: [],
|
timestampElapsedHistory: [],
|
||||||
engineDeltaHistory: [],
|
engineDeltaHistory: [],
|
||||||
engineElapsedHistory: [],
|
engineElapsedHistory: [],
|
||||||
|
engineUpdatesHistory: [],
|
||||||
elapsedHistory: []
|
elapsedHistory: []
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
|
@ -552,15 +553,19 @@ var Mouse = require('../core/Mouse');
|
||||||
elapsedHistory = timing.elapsedHistory,
|
elapsedHistory = timing.elapsedHistory,
|
||||||
timestampElapsedHistory = timing.timestampElapsedHistory,
|
timestampElapsedHistory = timing.timestampElapsedHistory,
|
||||||
engineDeltaHistory = timing.engineDeltaHistory,
|
engineDeltaHistory = timing.engineDeltaHistory,
|
||||||
|
engineUpdatesHistory = timing.engineUpdatesHistory,
|
||||||
engineElapsedHistory = timing.engineElapsedHistory,
|
engineElapsedHistory = timing.engineElapsedHistory,
|
||||||
|
lastEngineUpdatesPerFrame = engine.timing.lastUpdatesPerFrame,
|
||||||
lastEngineDelta = engine.timing.lastDelta;
|
lastEngineDelta = engine.timing.lastDelta;
|
||||||
|
|
||||||
var deltaMean = _mean(deltaHistory),
|
var deltaMean = _mean(deltaHistory),
|
||||||
elapsedMean = _mean(elapsedHistory),
|
elapsedMean = _mean(elapsedHistory),
|
||||||
engineDeltaMean = _mean(engineDeltaHistory),
|
engineDeltaMean = _mean(engineDeltaHistory),
|
||||||
|
engineUpdatesMean = _mean(engineUpdatesHistory),
|
||||||
engineElapsedMean = _mean(engineElapsedHistory),
|
engineElapsedMean = _mean(engineElapsedHistory),
|
||||||
timestampElapsedMean = _mean(timestampElapsedHistory),
|
timestampElapsedMean = _mean(timestampElapsedHistory),
|
||||||
rateMean = (timestampElapsedMean / deltaMean) || 0,
|
rateMean = (timestampElapsedMean / deltaMean) || 0,
|
||||||
|
neededUpdatesPerFrame = Math.round(deltaMean / lastEngineDelta),
|
||||||
fps = (1000 / deltaMean) || 0;
|
fps = (1000 / deltaMean) || 0;
|
||||||
|
|
||||||
var graphHeight = 4,
|
var graphHeight = 4,
|
||||||
|
@ -572,7 +577,7 @@ var Mouse = require('../core/Mouse');
|
||||||
|
|
||||||
// background
|
// background
|
||||||
context.fillStyle = '#0e0f19';
|
context.fillStyle = '#0e0f19';
|
||||||
context.fillRect(0, 50, gap * 4 + width * 5 + 22, height);
|
context.fillRect(0, 50, gap * 5 + width * 6 + 22, height);
|
||||||
|
|
||||||
// show FPS
|
// show FPS
|
||||||
Render.status(
|
Render.status(
|
||||||
|
@ -590,17 +595,25 @@ var Mouse = require('../core/Mouse');
|
||||||
function(i) { return (engineDeltaHistory[i] / engineDeltaMean) - 1; }
|
function(i) { return (engineDeltaHistory[i] / engineDeltaMean) - 1; }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// show engine updates per frame
|
||||||
|
Render.status(
|
||||||
|
context, x + (gap + width) * 2, y, width, graphHeight, engineUpdatesHistory.length,
|
||||||
|
lastEngineUpdatesPerFrame + ' upf',
|
||||||
|
Math.pow(Common.clamp((engineUpdatesMean / neededUpdatesPerFrame) || 1, 0, 1), 4),
|
||||||
|
function(i) { return (engineUpdatesHistory[i] / engineUpdatesMean) - 1; }
|
||||||
|
);
|
||||||
|
|
||||||
// show engine update time
|
// show engine update time
|
||||||
Render.status(
|
Render.status(
|
||||||
context, x + (gap + width) * 2, y, width, graphHeight, engineElapsedHistory.length,
|
context, x + (gap + width) * 3, y, width, graphHeight, engineElapsedHistory.length,
|
||||||
engineElapsedMean.toFixed(2) + ' ut',
|
engineElapsedMean.toFixed(2) + ' ut',
|
||||||
1 - (engineElapsedMean / Render._goodFps),
|
1 - (lastEngineUpdatesPerFrame * engineElapsedMean / Render._goodFps),
|
||||||
function(i) { return (engineElapsedHistory[i] / engineElapsedMean) - 1; }
|
function(i) { return (engineElapsedHistory[i] / engineElapsedMean) - 1; }
|
||||||
);
|
);
|
||||||
|
|
||||||
// show render time
|
// show render time
|
||||||
Render.status(
|
Render.status(
|
||||||
context, x + (gap + width) * 3, y, width, graphHeight, elapsedHistory.length,
|
context, x + (gap + width) * 4, y, width, graphHeight, elapsedHistory.length,
|
||||||
elapsedMean.toFixed(2) + ' rt',
|
elapsedMean.toFixed(2) + ' rt',
|
||||||
1 - (elapsedMean / Render._goodFps),
|
1 - (elapsedMean / Render._goodFps),
|
||||||
function(i) { return (elapsedHistory[i] / elapsedMean) - 1; }
|
function(i) { return (elapsedHistory[i] / elapsedMean) - 1; }
|
||||||
|
@ -608,7 +621,7 @@ var Mouse = require('../core/Mouse');
|
||||||
|
|
||||||
// show effective speed
|
// show effective speed
|
||||||
Render.status(
|
Render.status(
|
||||||
context, x + (gap + width) * 4, y, width, graphHeight, timestampElapsedHistory.length,
|
context, x + (gap + width) * 5, y, width, graphHeight, timestampElapsedHistory.length,
|
||||||
rateMean.toFixed(2) + ' x',
|
rateMean.toFixed(2) + ' x',
|
||||||
rateMean * rateMean * rateMean,
|
rateMean * rateMean * rateMean,
|
||||||
function(i) { return (((timestampElapsedHistory[i] / deltaHistory[i]) / rateMean) || 0) - 1; }
|
function(i) { return (((timestampElapsedHistory[i] / deltaHistory[i]) / rateMean) || 0) - 1; }
|
||||||
|
@ -1433,6 +1446,9 @@ var Mouse = require('../core/Mouse');
|
||||||
timing.timestampElapsedHistory.unshift(timing.timestampElapsed);
|
timing.timestampElapsedHistory.unshift(timing.timestampElapsed);
|
||||||
timing.timestampElapsedHistory.length = Math.min(timing.timestampElapsedHistory.length, historySize);
|
timing.timestampElapsedHistory.length = Math.min(timing.timestampElapsedHistory.length, historySize);
|
||||||
|
|
||||||
|
timing.engineUpdatesHistory.unshift(engine.timing.lastUpdatesPerFrame);
|
||||||
|
timing.engineUpdatesHistory.length = Math.min(timing.engineUpdatesHistory.length, historySize);
|
||||||
|
|
||||||
timing.engineElapsedHistory.unshift(engine.timing.lastElapsed);
|
timing.engineElapsedHistory.unshift(engine.timing.lastElapsed);
|
||||||
timing.engineElapsedHistory.length = Math.min(timing.engineElapsedHistory.length, historySize);
|
timing.engineElapsedHistory.length = Math.min(timing.engineElapsedHistory.length, historySize);
|
||||||
|
|
||||||
|
@ -1722,6 +1738,7 @@ var Mouse = require('../core/Mouse');
|
||||||
*
|
*
|
||||||
* - average render frequency (e.g. 60 fps)
|
* - average render frequency (e.g. 60 fps)
|
||||||
* - exact engine delta time used for last update (e.g. 16.66ms)
|
* - exact engine delta time used for last update (e.g. 16.66ms)
|
||||||
|
* - average updates per frame (e.g. 1)
|
||||||
* - average engine execution duration (e.g. 5.00ms)
|
* - average engine execution duration (e.g. 5.00ms)
|
||||||
* - average render execution duration (e.g. 0.40ms)
|
* - average render execution duration (e.g. 0.40ms)
|
||||||
* - average effective play speed (e.g. '1.00x' is 'real-time')
|
* - average effective play speed (e.g. '1.00x' is 'real-time')
|
||||||
|
|
Loading…
Add table
Reference in a new issue