50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
let __registeredAfterTickCallbacks = [];
|
|
let __registeredBeforeTickCallbacks = [];
|
|
window.addEventListener("load", ()=>{
|
|
const oldTick = tick;
|
|
clearInterval(tickInterval);
|
|
tick = function(){
|
|
__registeredBeforeTickCallbacks.forEach(func=>{
|
|
func();
|
|
});
|
|
oldTick();
|
|
__registeredAfterTickCallbacks.forEach(func=>{
|
|
func();
|
|
});
|
|
}
|
|
tickInterval = setInterval(tick, 1000/tps);
|
|
});
|
|
function everyTick(callback) {
|
|
afterEveryTick(callback);
|
|
}
|
|
window.everyTick = everyTick;
|
|
function beforeEveryTick(callback) {
|
|
__registeredBeforeTickCallbacks.push(callback);
|
|
}
|
|
window.beforeEveryTick = beforeEveryTick;
|
|
function afterEveryTick(callback) {
|
|
__registeredAfterTickCallbacks.push(callback);
|
|
}
|
|
window.afterEveryTick = afterEveryTick;
|
|
function removeTickListener(callback, mode) {
|
|
let removed = false;
|
|
if(mode!=="before") {
|
|
let index = __registeredAfterTickCallbacks.indexOf(callback);
|
|
if (index === -1 && mode === "after") throw new Error(`Could not find callback.`);
|
|
if(index !== -1) {
|
|
__registeredAfterTickCallbacks.splice(index, 1);
|
|
removed = true;
|
|
}
|
|
}
|
|
if(mode!=="after") {
|
|
let index = __registeredBeforeTickCallbacks.indexOf(callback);
|
|
if (index === -1 && mode === "before") throw new Error(`Could not find callback.`);
|
|
if(index !== -1) {
|
|
__registeredBeforeTickCallbacks.splice(index, 1);
|
|
removed = true;
|
|
}
|
|
}
|
|
return removed;
|
|
}
|
|
window.removeTickListener = removeTickListener;
|