I was making a custom animation player but when loading the animation, I need to feel the empty keyframes, bu when I’m generating they CFrame’s, each keyframe replaces the rest that was already generated, for example when it’s at keyframe #26, it will replace all keyframes 25, 24, 23, … to itself, how do I fix this, I have used breakpoints and watcher tool to read the values, here is the script
local function CopyTable(original)
local copy = {}
for key, value in pairs(original) do
copy[key] = value
end
return copy
end
local function SortTable(dictionary)
local array = {}
for key, value in pairs(dictionary) do
array[#array+1] = {key = key, value = value}
end
table.sort(array, function(a, b)
return a.key < b.key
end)
return array
end
-- ... rest of the script ...
local ProcessingKeyframes = SortTable(CopyTable(NewAnimation.Keyframes))
local LastID = 0
for keyid, keyraw in pairs(ProcessingKeyframes) do
local i, keyframe = keyraw.key, keyraw.value
if LastID ~= 0 then
local EmptyKeyframes = (i - LastID) - 1
if EmptyKeyframes > 0 then
for x = LastID + 1, LastID + EmptyKeyframes do
local PrevKeyframe = CopyTable(ProcessingKeyframes[keyid-1].value)
for poseid, pose in pairs(keyframe.Poses) do
local prevPose = nil
local prevPoseID = 0
for keyid, key in pairs(ProcessingKeyframes) do
if key.key >= i then
break
end
for _poseid, _pose in pairs(key.value.Poses) do
if _pose[1] == pose[1] then
prevPose = _pose
prevPoseID = key.key
end
end
end
if prevPose then
print(prevPose[2].Position)
PrevKeyframe.Poses[poseid][2] = prevPose[2]:Lerp(pose[2], (x - prevPoseID) / (i - prevPoseID))
end
end
NewAnimation.Keyframes[x] = CopyTable(PrevKeyframe)
end
end
end
LastID = i
end