Macro Recorder On Hax May 2026

class Recorder static var events: Array<MacroEvent> = []; static var startTime: Int; public static function start():Void startTime = haxe.Timer.stamp() * 1000; InputHook.onMouseMove = (x, y) -> var now = (haxe.Timer.stamp() * 1000) - startTime; events.push(MouseMove(x, y, now)); ; // ... similar for keys/buttons

function replay(events:Array<MacroEvent>, speed:Float = 1.0):Void var i = 0; var startTime = haxe.Timer.stamp() * 1000; var timer = new haxe.Timer(1); // 1ms resolution timer.run = function() if (i >= events.length) timer.stop(); return; var now = (haxe.Timer.stamp() * 1000) - startTime; var targetTime = events[i].timestamp / speed; if (now >= targetTime) simulateEvent(events[i]); i++; ; macro recorder on hax

This generates a replay function with zero runtime parsing overhead. We tested the macro recorder on three platforms: class Recorder static var events: Array&lt

Instead of interpreting events at runtime, we can embed the recorded macro as Haxe code using a build macro: static var startTime: Int