sandboxels/mods/libhooktick.js

50 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

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;
2023-01-16 17:02:21 -05:00
}
window.removeTickListener = removeTickListener;