瀏覽代碼

[fx] Set dt to 0 on first sync to mimic old behavior

Clément Espeute 1 月之前
父節點
當前提交
6c7447fc8c
共有 1 個文件被更改,包括 4 次插入5 次删除
  1. 4 5
      hrt/prefab/fx/FX.hx

+ 4 - 5
hrt/prefab/fx/FX.hx

@@ -276,10 +276,9 @@ class FXAnimation extends h3d.scene.Object {
 		var curTime = localTime;
 
 		if(playSpeed > 0 || firstSync) {
-			// This is done in syncRec() to make sure time and events are updated regarless of culling state,
-			// so we restore FX in correct state when unculled
 			if (parentFX == null) {
-				var dt = ctx.elapsedTime * playSpeed;
+				var dt = firstSync ? 0 : ctx.elapsedTime * playSpeed;
+
 				setTimeInternal(curTime + dt, dt, false, fullSync);
 			}
 		}
@@ -394,14 +393,14 @@ class FXAnimation extends h3d.scene.Object {
 				t.update(hxd.Math.max(dt, 0.0));
 			}
 
-			Event.updateEvents(events, localTime, oldLocalTime, duration);
-
 			#if editor
 			if (isSeek || hxd.Math.abs(dt) > hxd.Timer.dt * 1.5) {
 				fixEventSeek();
 			}
 			#end
 		}
+
+		Event.updateEvents(events, localTime, oldLocalTime, duration);
 	}
 
 	function fixEventSeek() {