Merge pull request 'moisesjpelaez - Fix pausing and resuming updates' (#59) from Onek8/LNXSDK:main into main

Reviewed-on: LeenkxTeam/LNXSDK#59
This commit is contained in:
2025-06-02 16:35:35 +00:00
3 changed files with 26 additions and 17 deletions

View File

@ -52,9 +52,9 @@ class App {
static function update() { static function update() {
if (Scene.active == null || !Scene.active.ready) return; if (Scene.active == null || !Scene.active.ready) return;
if (pauseUpdates) return;
iron.system.Time.update(); iron.system.Time.update();
if (pauseUpdates) return;
#if lnx_debug #if lnx_debug
startTime = kha.Scheduler.realTime(); startTime = kha.Scheduler.realTime();

View File

@ -22,10 +22,10 @@ class ParticleSystem {
var ready: Bool; var ready: Bool;
var frameRate = 24; var frameRate = 24;
var lifetime = 0.0; var lifetime = 0.0;
var looptime = 0.0;
var animtime = 0.0; var animtime = 0.0;
var time = 0.0; var time = 0.0;
var spawnRate = 0.0; var spawnRate = 0.0;
var looptime = 0.0;
var seed = 0; var seed = 0;
var r: TParticleData; var r: TParticleData;
@ -124,7 +124,8 @@ class ParticleSystem {
public function update(object: MeshObject, owner: MeshObject) { public function update(object: MeshObject, owner: MeshObject) {
if (!ready || object == null || speed == 0.0) return; if (!ready || object == null || speed == 0.0) return;
if (iron.App.pauseUpdates) return;
var prevLap = lap; var prevLap = lap;
// Copy owner world transform but discard scale // Copy owner world transform but discard scale

View File

@ -1,7 +1,13 @@
package iron.system; package iron.system;
class Time { class Time {
public static var scale = 1.0;
static var frequency: Null<Int> = null;
static function initFrequency() {
frequency = kha.Display.primary != null ? kha.Display.primary.frequency : 60;
}
public static var step(get, never): Float; public static var step(get, never): Float;
static function get_step(): Float { static function get_step(): Float {
if (frequency == null) initFrequency(); if (frequency == null) initFrequency();
@ -14,37 +20,39 @@ class Time {
return _fixedStep; return _fixedStep;
} }
public static function initFixedStep(value: Float = 1 / 60) { public static function initFixedStep(value: Float = 1 / 60) {
_fixedStep = value; _fixedStep = value;
} }
static var lastTime = 0.0; static var lastTime = 0.0;
public static var delta = 0.0; static var _delta = 0.0;
public static var delta(get, never): Float;
static function get_delta(): Float {
return _delta;
}
static var lastRenderTime = 0.0; static var lastRenderTime = 0.0;
public static var renderDelta = 0.0; static var _renderDelta = 0.0;
public static var renderDelta(get, never): Float;
static function get_renderDelta(): Float {
return _renderDelta;
}
public static inline function time(): Float { public static inline function time(): Float {
return kha.Scheduler.time(); return kha.Scheduler.time();
} }
public static inline function realTime(): Float { public static inline function realTime(): Float {
return kha.Scheduler.realTime(); 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() { public static function update() {
delta = (realTime() - lastTime) * scale; _delta = realTime() - lastTime;
lastTime = realTime(); lastTime = realTime();
} }
public static function render() { public static function render() {
renderDelta = (realTime() - lastRenderTime) * scale; _renderDelta = realTime() - lastRenderTime;
lastRenderTime = realTime(); lastRenderTime = realTime();
} }
} }