package aura; import kha.Scheduler; import aura.threading.BufferCache; class Time { public static var lastTime(default, null): Float = 0.0; public static var delta(default, null): Float = 0.0; #if AURA_UNIT_TESTS public static var overrideTime: Null = null; #end #if AURA_BENCHMARK public static var times: Array; static var benchmarkStarted = false; static var currentIteration = 0; static var numIterations = 0; static var onBenchmarkDone: Array->Void; #end public static inline function getTime():Float { #if AURA_UNIT_TESTS if (overrideTime != null) { return overrideTime; } #end return Scheduler.realTime(); } public static inline function update() { delta = getTime() - lastTime; lastTime = getTime(); BufferCache.updateTimer(); } #if AURA_BENCHMARK public static inline function endOfFrame() { if (benchmarkStarted) { times[currentIteration] = Scheduler.realTime() - lastTime; currentIteration++; if (currentIteration == numIterations) { onBenchmarkDone(times); benchmarkStarted = false; currentIteration = 0; } } } public static function startBenchmark(numIterations: Int, onBenchmarkDone: Array->Void) { Time.numIterations = numIterations; Time.onBenchmarkDone = onBenchmarkDone; times = new Array(); times.resize(numIterations); benchmarkStarted = true; } #end }