Skip to content

Commit 857c2fd

Browse files
committed
update engine
1 parent 6547f8a commit 857c2fd

File tree

2 files changed

+26
-27
lines changed

2 files changed

+26
-27
lines changed

public/litecanvas.js

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
var assert = (condition, message = "Assertion failed") => {
2828
if (!condition) throw new Error(message);
2929
};
30-
var version = "0.94.0";
30+
var version = "0.94.1";
3131
function litecanvas(settings = {}) {
3232
const root = window, math = Math, TWO_PI = math.PI * 2, raf = requestAnimationFrame, _browserEventListeners = [], on = (elem, evt, callback) => {
3333
elem.addEventListener(evt, callback, false);
@@ -45,7 +45,7 @@
4545
animate: true
4646
};
4747
settings = Object.assign(defaults, settings);
48-
let _initialized = false, _plugins = [], _canvas, _scale = 1, _ctx, _outline_fix = 0.5, _timeScale = 1, _lastFrameTime, _deltaTime = 1 / 60, _accumulated, _rafid, _fontFamily = "sans-serif", _fontSize = 20, _rngSeed = Date.now(), _colors = defaultPalette, _defaultSound = [0.5, 0, 1750, , , 0.3, 1, , , , 600, 0.1], _coreEvents = "init,update,draw,tap,untap,tapping,tapped,resized", _mathFunctions = "PI,sin,cos,atan2,hypot,tan,abs,ceil,floor,trunc,min,max,pow,sqrt,sign,exp", _eventListeners = {};
48+
let _initialized = false, _plugins = [], _canvas, _scale = 1, _ctx, _outline_fix = 0.5, _timeScale = 1, _lastFrameTime, _fpsInterval = 1e3 / 60, _accumulated, _rafid, _fontFamily = "sans-serif", _fontSize = 20, _rngSeed = Date.now(), _colors = defaultPalette, _defaultSound = [0.5, 0, 1750, , , 0.3, 1, , , , 600, 0.1], _coreEvents = "init,update,draw,tap,untap,tapping,tapped,resized", _mathFunctions = "PI,sin,cos,atan2,hypot,tan,abs,ceil,floor,trunc,min,max,pow,sqrt,sign,exp", _eventListeners = {};
4949
const instance = {
5050
/** @type {number} */
5151
W: 0,
@@ -951,7 +951,7 @@
951951
isNumber(value) && value >= 1,
952952
"[litecanvas] framerate() 1st param must be a positive number"
953953
);
954-
_deltaTime = 1 / ~~value;
954+
_fpsInterval = 1e3 / ~~value;
955955
},
956956
/**
957957
* Returns information about that engine instance.
@@ -967,7 +967,7 @@
967967
// 1
968968
_initialized,
969969
// 2
970-
_deltaTime,
970+
_fpsInterval / 1e3,
971971
// 3
972972
_scale,
973973
// 4
@@ -1021,8 +1021,8 @@
10211021
*/
10221022
resume() {
10231023
if (_initialized && !_rafid) {
1024-
_accumulated = _deltaTime;
1025-
_lastFrameTime = performance.now();
1024+
_accumulated = _fpsInterval;
1025+
_lastFrameTime = Date.now();
10261026
_rafid = raf(drawFrame);
10271027
}
10281028
},
@@ -1078,7 +1078,7 @@
10781078
// initial y
10791079
yi: y,
10801080
// timestamp
1081-
t: performance.now()
1081+
t: Date.now()
10821082
};
10831083
_taps.set(id, tap);
10841084
return tap;
@@ -1098,7 +1098,7 @@
10981098
/**
10991099
* @param {{t: number}} tap
11001100
*/
1101-
(tap) => tap && performance.now() - tap.t <= 300
1101+
(tap) => tap && Date.now() - tap.t <= 300
11021102
), preventDefault = (
11031103
/**
11041104
* @param {Event} ev
@@ -1271,37 +1271,36 @@
12711271
}
12721272
);
12731273
}
1274-
setInterval(() => {
1275-
if (_rafid) {
1276-
instance.pause();
1277-
instance.resume();
1278-
}
1279-
}, 5e3);
12801274
_initialized = true;
12811275
instance.emit("init", instance);
12821276
instance.resume();
12831277
}
1284-
function drawFrame(now) {
1278+
function drawFrame() {
12851279
if (!settings.animate) {
12861280
return instance.emit("draw", _ctx);
1287-
} else if (_rafid) {
1288-
_rafid = raf(drawFrame);
12891281
}
1282+
let now = Date.now();
12901283
let updated = 0;
1291-
let frameTime = (now - _lastFrameTime) / 1e3;
1284+
let frameTime = now - _lastFrameTime;
12921285
_lastFrameTime = now;
1293-
if (frameTime < 0.1) {
1294-
_accumulated += frameTime;
1295-
while (_accumulated >= _deltaTime) {
1296-
updated++;
1297-
instance.emit("update", _deltaTime * _timeScale, updated);
1298-
instance.def("T", instance.T + _deltaTime * _timeScale);
1299-
_accumulated -= _deltaTime;
1300-
}
1286+
_accumulated += frameTime < 100 ? frameTime : _fpsInterval;
1287+
while (_accumulated >= _fpsInterval) {
1288+
updated++;
1289+
_accumulated -= _fpsInterval;
1290+
let dt = _fpsInterval / 1e3 * _timeScale;
1291+
instance.emit("update", dt, updated);
1292+
instance.def("T", instance.T + dt);
13011293
}
13021294
if (updated) {
13031295
instance.emit("draw", _ctx);
1296+
if (updated > 1) {
1297+
_accumulated = 0;
1298+
DEV: console.warn(
1299+
"[litecanvas] the last frame updated " + updated + " times. This can drop the FPS if it keeps happening."
1300+
);
1301+
}
13041302
}
1303+
_rafid = raf(drawFrame);
13051304
}
13061305
function setupCanvas() {
13071306
if ("string" === typeof settings.canvas) {

public/sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const cacheName = "luizbills.litecanvas-editor-v1";
2-
const version = "2025.7.21.3";
2+
const version = "2025.7.21.4";
33

44
const precacheResources = [
55
"/",

0 commit comments

Comments
 (0)