2025-01-22 16:18:30 +01:00
|
|
|
package iron.system;
|
|
|
|
|
|
|
|
class Time {
|
|
|
|
|
|
|
|
public static var step(get, never): Float;
|
|
|
|
static function get_step(): Float {
|
|
|
|
if (frequency == null) initFrequency();
|
|
|
|
return 1 / frequency;
|
|
|
|
}
|
2025-06-01 23:18:35 +00:00
|
|
|
|
2025-06-02 04:18:44 +00:00
|
|
|
static var _fixedStep: Null<Float>;
|
2025-06-01 23:18:35 +00:00
|
|
|
public static var fixedStep(get, never): Float;
|
|
|
|
static function get_fixedStep(): Float {
|
2025-06-02 04:18:44 +00:00
|
|
|
return _fixedStep;
|
2025-06-01 23:18:35 +00:00
|
|
|
}
|
|
|
|
|
2025-06-02 04:18:44 +00:00
|
|
|
|
|
|
|
public static function initFixedStep(value: Float = 1 / 60) {
|
|
|
|
_fixedStep = value;
|
2025-01-22 16:18:30 +01:00
|
|
|
}
|
|
|
|
|
2025-06-02 04:18:44 +00:00
|
|
|
|
|
|
|
static var lastTime = 0.0;
|
|
|
|
public static var delta = 0.0;
|
|
|
|
|
|
|
|
static var lastRenderTime = 0.0;
|
|
|
|
public static var renderDelta = 0.0;
|
2025-01-22 16:18:30 +01:00
|
|
|
public static inline function time(): Float {
|
|
|
|
return kha.Scheduler.time();
|
|
|
|
}
|
|
|
|
public static inline function realTime(): Float {
|
|
|
|
return kha.Scheduler.realTime();
|
|
|
|
}
|
|
|
|
|
|
|
|
static var frequency: Null<Int> = null;
|
|
|
|
|
|
|
|
static function initFrequency() {
|
|
|
|
frequency = kha.Display.primary != null ? kha.Display.primary.frequency : 60;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function update() {
|
2025-06-02 04:18:44 +00:00
|
|
|
delta = (realTime() - lastTime) * scale;
|
|
|
|
lastTime = realTime();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function render() {
|
|
|
|
renderDelta = (realTime() - lastRenderTime) * scale;
|
|
|
|
lastRenderTime = realTime();
|
2025-01-22 16:18:30 +01:00
|
|
|
}
|
|
|
|
}
|