[lua] Ported fix for DeformTimeline, see #932

This commit is contained in:
badlogic 2017-07-04 10:43:59 +02:00
parent 8b14b18fda
commit 807c4d27bd

View File

@ -800,20 +800,42 @@ function Animation.DeformTimeline.new (frameCount)
local frameVertices = self.frameVertices local frameVertices = self.frameVertices
local vertexCount = #(frameVertices[0]) local vertexCount = #(frameVertices[0])
if (#verticesArray ~= vertexCount and not setupPose) then alpha = 1 end -- Don't mix from uninitialized slot vertices.
local vertices = utils.setArraySize(verticesArray, vertexCount) local vertices = utils.setArraySize(verticesArray, vertexCount)
if time < frames[0] then if time < frames[0] then
local vertexAttachment = slotAttachment;
if pose == MixPose.setup then if pose == MixPose.setup then
verticesArray = {} if (vertexAttachment.bones == nil) then
slot.attachmentVertices = verticesArray local i = 1
local setupVertices = vertexAttachment.vertices
while i <= vertexCount do
vertices[i] = setupVertices[i]
i = i + 1
end
else
local i = 1
while i <= vertexCount do
vertices[i] = 0
i = i + 1
end
end
elseif pose == MixPose.current then elseif pose == MixPose.current then
alpha = 1 - alpha if (alpha ~= 1) then
local i = 1 if (vertexAttachment.bones == nil) then
while i <= vertexCount do local setupVertices = vertexAttachment.vertices
vertices[i] = vertices[i] * alpha local i = 1
i = i + 1 while i <= vertexCount do
vertices[i] = vertices[i] + (setupVertices[i] - vertices[i]) * alpha
i = i + 1
end
else
alpha = 1 - alpha
local i = 1
while i <= vertexCount do
vertices[i] = vertices[i] * alpha
i = i + 1
end
end
end end
end end
return return