PGRData/Script/matrix/xmovieactions/XMovieActionTimelinePlay.lua

43 lines
1.2 KiB
Lua
Raw Normal View History

local XMovieActionTimelinePlay = XClass(XMovieActionBase, "XMovieActionTimelinePlay")
local CAMERA_TRACK = "Camera"
function XMovieActionTimelinePlay:Ctor(actionData)
local params = actionData.Params
self.TimelineName = params[1]
self.TrackDic = {}
for i = 2, #params do
local kv = string.Split(params[i], "|")
self.TrackDic[kv[1]] = kv[2]
end
end
function XMovieActionTimelinePlay:OnRunning()
---@type UnityEngine.Playables.PlayableDirector
local timelineHelper = self.UiRoot:GetTimeline(self.TimelineName)
if not timelineHelper then
return
end
local roleList = {}
timelineHelper:SetBindingTarget(CAMERA_TRACK, self.UiRoot.CineMachineBrain)
for trackName, roleId in pairs(self.TrackDic) do
---@type Movie.XMovie3DRole
local role = self.UiRoot:GetModelActor(roleId)
if not role then
return
end
table.insert(roleList, role)
timelineHelper:SetBindingTarget(trackName, role.gameObject)
end
timelineHelper:Play(function()
for _, role in pairs(roleList) do
--动画播放完毕后修正transform最终位置
role:FixFinalPosition()
end
end)
end
return XMovieActionTimelinePlay