@tinyactors/scxmljs
    Preparing search index...

    Class PlaybackClock

    A VirtualClock that real time drives forward — at an adjustable speed — and that can be paused and stepped. For visualisations: everything that takes its time from this clock (sessions, delayed sends, fake services, simulated environments) slows down, stops and single-steps together.

    const clock = new PlaybackClock({ speed: 0.5 }); const session = await createSession(src, { clock }); clock.pause(); clock.step(); clock.play();

    Hierarchy (View Summary)

    Index

    Constructors

    • speed defaults to 1; playing (default true) starts driving the clock right away.

      Parameters

      • opts: { playing?: boolean; speed?: number } = {}

      Returns PlaybackClock

    Accessors

    • get idle(): boolean

      True when nothing is scheduled: no deferred work and no pending timers.

      Returns boolean

    • get nextTimerAt(): number | undefined

      Virtual time of the next timer, if any.

      Returns number | undefined

    • get pending(): number

      Number of pending tasks (deferred work + timers).

      Returns number

    • get playing(): boolean

      Whether real time is currently driving the clock.

      Returns boolean

    • get ready(): number

      Deferred work waiting to run now (e.g. queued external events).

      Returns number

    • get speed(): number

      Virtual ms per real ms (1 = real time, 0.5 = half speed).

      Returns number

    • set speed(v: number): void

      Change the speed; negative values are treated as 0.

      Parameters

      • v: number

      Returns void

    Methods

    • Advance by ms, running everything due.

      Parameters

      • ms: number

      Returns number

    • Cancel a timer from setTimeout. Unknown or already-fired handles are ignored.

      Parameters

      • handle: unknown

      Returns void

    • Like VirtualClock.defer, and notifies subscribers that work is queued.

      Parameters

      • fn: () => void

      Returns void

    • Pause and drop every subscriber.

      Returns void

    • The current time in ms (real or virtual).

      Returns number

    • Stop time: nothing runs until play() or step().

      Returns void

    • Let real time drive the clock (at speed).

      Returns void

    • Runs deferred work, then fires timers in time order, advancing virtual time, until nothing is pending or the next timer is later than until (absolute virtual ms). Returns the number of tasks run.

      Parameters

      • until: number = Infinity
      • maxTasks: number = 1_000_000

      Returns number

    • Run exactly one task: the oldest deferred one, else the earliest timer (advancing virtual time to it). Returns false when nothing is pending.

      Returns boolean

    • Like VirtualClock.setTimeout, and notifies subscribers that work is queued.

      Parameters

      • fn: () => void
      • ms: number

      Returns number

    • Run tasks one at a time — jumping virtual time to the next timer when nothing is ready — until until() holds after a task, or nothing is pending. Pauses first. Returns the number of tasks run.

      Parameters

      • until: () => boolean = ...
      • maxTasks: number = 10_000

      Returns number

    • Called after every tick, play/pause, speed change and step, and when work is queued. Returns an unsubscribe function.

      Parameters

      • fn: () => void

      Returns () => void

    • Play if paused, pause if playing.

      Returns void