From 2104bc76701d6d71656df68de8d0ac05ab1f249e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 5 Sep 2026 23:51:56 +0300 Subject: [PATCH] fix vca duration calculation --- res/modules/internal/formats/vca.lua | 2 +- res/scripts/components/animator.lua | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/res/modules/internal/formats/vca.lua b/res/modules/internal/formats/vca.lua index cb7b7390d..a44a89826 100644 --- a/res/modules/internal/formats/vca.lua +++ b/res/modules/internal/formats/vca.lua @@ -21,7 +21,7 @@ local function parse_configure(raw_track, node) raw_track.fps = node.fps end if node.frames then - raw_track.duration = node.frames / node.fps + raw_track.duration = node.frames / (node.fps or DEFAULT_FPS) elseif node.duration then raw_track.duration = node.duration end diff --git a/res/scripts/components/animator.lua b/res/scripts/components/animator.lua index 810ea7648..5bd3ef4fa 100644 --- a/res/scripts/components/animator.lua +++ b/res/scripts/components/animator.lua @@ -1,3 +1,5 @@ +local ALMOST_HUGE = 1e9 + local rig = entity.skeleton local states = {} @@ -50,7 +52,11 @@ local function update(delta) state.track = state.track or animation.get_track(state.track_id) if state.track and intensity > 0.0 then - state.track.func(rig, state.timer, intensity * state.max_intencity) + state.track.func( + rig, + state.timer % math.min(ALMOST_HUGE, state.track.duration), + intensity * state.max_intencity + ) end end end