fix: guard unknown event types, keep world.t consistent on throw (review)

This commit is contained in:
2026-06-12 14:26:48 +00:00
parent b2aef9e72c
commit aa52e402e3
+6 -1
View File
@@ -82,10 +82,15 @@ const HANDLERS = {
// Advance the world to absolute time toTime, processing all due events in order. // Advance the world to absolute time toTime, processing all due events in order.
export function advance(world, toTime) { export function advance(world, toTime) {
try {
while (world.queue.size > 0 && world.queue.peek().time <= toTime) { while (world.queue.size > 0 && world.queue.peek().time <= toTime) {
const ev = world.queue.pop(); const ev = world.queue.pop();
world.t = ev.time; world.t = ev.time;
HANDLERS[ev.type](world, ev.data); const handler = HANDLERS[ev.type];
if (!handler) throw new Error(`Unknown event type: ${ev.type}`);
handler(world, ev.data);
} }
} finally {
world.t = toTime; world.t = toTime;
} }
}