feat: animation track as asset (WIP)

This commit is contained in:
MihailRis 2026-08-25 23:09:14 +03:00
parent df5bc1f9fe
commit 104c74e653
10 changed files with 86 additions and 24 deletions

View file

@ -279,7 +279,7 @@ end
local cached_tracks = {}
function this.load_vca(filepath)
function this.load_vca(filepath, identifier)
local track = cached_tracks[filepath]
if track then
return track
@ -287,8 +287,16 @@ function this.load_vca(filepath)
local source = file.read(filepath)
local raw_track = parse_track(xml.parse_vcd(source, "track"))
track = this.compile_track(raw_track, filepath)
cached_tracks[filepath] = track
cached_tracks[identifier] = track
return track
end
function this.get_track(identifier)
return cached_tracks[identifier]
end
function __vc_internals.load_vca_animation(filepath, identifier)
this.load_vca(filepath, identifier)
end
return this

View file

@ -2,9 +2,10 @@ local rig = entity.skeleton
local states = {}
function create_state(name, track, max_intencity)
function create_state(name, track_id, max_intencity)
states[name] = {
track = track,
track = nil,
track_id = track_id,
timer = 0.0,
fade_time = 0.0,
fade_timer = 0.0,
@ -47,6 +48,7 @@ local function update(delta)
end
end
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)
end

View file

@ -332,6 +332,8 @@ end
world.raycast = entities.__world_raycast
entities.__world_raycast = nil
animation = require "core:animation"
__vc_scripts_registry = require "core:internal/scripts_registry"
file.open = require "core:internal/stream_providers/file"