latency :(
This commit is contained in:
parent
f1eaa83af5
commit
0c7b731fa6
2 changed files with 13 additions and 11 deletions
|
|
@ -21,7 +21,7 @@ let interval = 0.1;
|
||||||
//{type: 'log', payload: {type, text}}
|
//{type: 'log', payload: {type, text}}
|
||||||
|
|
||||||
const getTime = () => {
|
const getTime = () => {
|
||||||
return performance.now();
|
return performance.now() / 1000;
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendMessage = (message) => {
|
const sendMessage = (message) => {
|
||||||
|
|
@ -52,7 +52,7 @@ let clock = createClock(
|
||||||
lastEnd = end;
|
lastEnd = end;
|
||||||
const tickdeadline = phase - time; // time left until the phase is a whole number
|
const tickdeadline = phase - time; // time left until the phase is a whole number
|
||||||
lastTick = time + tickdeadline;
|
lastTick = time + tickdeadline;
|
||||||
sendMessage({ type: 'tick', payload: { begin, end, tickdeadline } });
|
sendMessage({ type: 'tick', payload: { begin, end, tickdeadline, cps, time: Date.now() } });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log(`[cyclist] error: ${e.message}`, 'error');
|
log(`[cyclist] error: ${e.message}`, 'error');
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +77,6 @@ self.onconnect = function (e) {
|
||||||
};
|
};
|
||||||
|
|
||||||
const processMessage = (message) => {
|
const processMessage = (message) => {
|
||||||
console.log(message);
|
|
||||||
const { type, payload } = message;
|
const { type, payload } = message;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|
@ -125,6 +124,7 @@ function createClock(
|
||||||
if (phase === 0) {
|
if (phase === 0) {
|
||||||
phase = t + minLatency;
|
phase = t + minLatency;
|
||||||
}
|
}
|
||||||
|
console.log({ t, phase, tick });
|
||||||
// callback as long as we're inside the lookahead
|
// callback as long as we're inside the lookahead
|
||||||
while (phase < lookahead) {
|
while (phase < lookahead) {
|
||||||
phase = Math.round(phase * precision) / precision;
|
phase = Math.round(phase * precision) / precision;
|
||||||
|
|
|
||||||
|
|
@ -12,18 +12,20 @@ export class NeoCyclist {
|
||||||
this.worker = new SharedWorker(new URL('./cyclistworker.js', import.meta.url));
|
this.worker = new SharedWorker(new URL('./cyclistworker.js', import.meta.url));
|
||||||
this.worker.port.start();
|
this.worker.port.start();
|
||||||
this.worker.port.addEventListener('message', (message) => {
|
this.worker.port.addEventListener('message', (message) => {
|
||||||
console.log(message);
|
const { payload, type } = message.data;
|
||||||
const { payload, type } = message;
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'tick': {
|
case 'tick': {
|
||||||
console.log('tick');
|
let { begin, end, cps, tickdeadline, time } = payload;
|
||||||
const { begin, end } = payload;
|
const messageLatency = (Date.now() - time) / 1000;
|
||||||
|
tickdeadline = tickdeadline - messageLatency;
|
||||||
|
console.log({ begin, end });
|
||||||
const haps = this.pattern.queryArc(begin, end);
|
const haps = this.pattern.queryArc(begin, end);
|
||||||
haps.forEach((hap) => {
|
haps.forEach((hap) => {
|
||||||
if (hap.part.begin.equals(hap.whole.begin)) {
|
if (hap.part.begin.equals(hap.whole.begin)) {
|
||||||
const deadline = (hap.whole.begin - begin) / this.cps + payload.deadline + latency;
|
const deadline = (hap.whole.begin - begin) / cps + tickdeadline + latency;
|
||||||
const duration = hap.duration / this.cps;
|
const duration = hap.duration / cps;
|
||||||
onTrigger?.(hap, deadline, duration, this.cps);
|
onTrigger?.(hap, deadline, duration, cps);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
@ -44,7 +46,7 @@ export class NeoCyclist {
|
||||||
}
|
}
|
||||||
|
|
||||||
now() {
|
now() {
|
||||||
return performance.now();
|
return performance.now() / 1000;
|
||||||
// this.sendMessage('requestcycles', {});
|
// this.sendMessage('requestcycles', {});
|
||||||
}
|
}
|
||||||
setCps(cps = 1) {
|
setCps(cps = 1) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue