mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-07 03:06:55 +08:00
[lua] Fixed first frame setup pose in all timelines
This commit is contained in:
parent
f85bfe5080
commit
0bc20211fe
@ -243,9 +243,14 @@ function Animation.RotateTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local bone = skeleton.bones[self.boneIndex]
|
local bone = skeleton.bones[self.boneIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
bone.rotation = bone.data.rotation
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
||||||
if setupPose then
|
if setupPose then
|
||||||
@ -308,9 +313,15 @@ function Animation.TranslateTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local bone = skeleton.bones[self.boneIndex]
|
local bone = skeleton.bones[self.boneIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if (setupPose) then
|
||||||
|
bone.x = bone.data.x
|
||||||
|
bone.y = bone.data.y
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local x = 0
|
local x = 0
|
||||||
local y = 0
|
local y = 0
|
||||||
@ -360,9 +371,15 @@ function Animation.ScaleTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local bone = skeleton.bones[self.boneIndex]
|
local bone = skeleton.bones[self.boneIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
bone.scaleX = bone.data.scaleX
|
||||||
|
bone.scaleY = bone.data.scaleY
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local x = 0
|
local x = 0
|
||||||
local y = 0
|
local y = 0
|
||||||
@ -429,9 +446,15 @@ function Animation.ShearTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local bone = skeleton.bones[self.boneIndex]
|
local bone = skeleton.bones[self.boneIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
bone.shearX = bone.data.shearX
|
||||||
|
bone.shearY = bone.data.shearY
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local x = 0
|
local x = 0
|
||||||
local y = 0
|
local y = 0
|
||||||
@ -496,7 +519,13 @@ function Animation.ColorTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
local slot = skeleton.slots[self.slotIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
slot.color.setFromt(slot.data.color)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local r, g, b, a
|
local r, g, b, a
|
||||||
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
||||||
@ -521,7 +550,6 @@ function Animation.ColorTimeline.new (frameCount)
|
|||||||
b = b + (frames[frame + B] - b) * percent
|
b = b + (frames[frame + B] - b) * percent
|
||||||
a = a + (frames[frame + A] - a) * percent
|
a = a + (frames[frame + A] - a) * percent
|
||||||
end
|
end
|
||||||
local slot = skeleton.slots[self.slotIndex]
|
|
||||||
if alpha == 1 then
|
if alpha == 1 then
|
||||||
slot.color:set(r, g, b, a)
|
slot.color:set(r, g, b, a)
|
||||||
else
|
else
|
||||||
@ -557,10 +585,9 @@ function Animation.AttachmentTimeline.new (frameCount)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local slot
|
local slot = skeleton.slots[self.slotIndex]
|
||||||
local attachmentName
|
local attachmentName
|
||||||
if mixingOut and setupPose then
|
if mixingOut and setupPose then
|
||||||
slot = skeleton.slots[self.slotIndex]
|
|
||||||
attachmentName = slot.data.attachmentName
|
attachmentName = slot.data.attachmentName
|
||||||
if not attachmentName then
|
if not attachmentName then
|
||||||
slot:setAttachment(nil)
|
slot:setAttachment(nil)
|
||||||
@ -571,7 +598,17 @@ function Animation.AttachmentTimeline.new (frameCount)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
attachmentName = slot.data.attachmentName
|
||||||
|
if not attachmentName then
|
||||||
|
slot:setAttachment(nil)
|
||||||
|
else
|
||||||
|
skeleton:setAttachment(skeleton:getAttachmentByIndex(self.slotIndex, attachmentName))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local frameIndex = 0
|
local frameIndex = 0
|
||||||
if time >= frames[zlen(frames) - 1] then
|
if time >= frames[zlen(frames) - 1] then
|
||||||
@ -617,12 +654,18 @@ function Animation.DeformTimeline.new (frameCount)
|
|||||||
if not slotAttachment:applyDeform(self.attachment) then return end
|
if not slotAttachment:applyDeform(self.attachment) then return end
|
||||||
|
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
local verticesArray = slot.attachmentVertices
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
verticesArray = {}
|
||||||
|
slot.attachmentVertices = verticesArray
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local frameVertices = self.frameVertices
|
local frameVertices = self.frameVertices
|
||||||
local vertexCount = #(frameVertices[0])
|
local vertexCount = #(frameVertices[0])
|
||||||
|
|
||||||
local verticesArray = slot.attachmentVertices
|
|
||||||
if (#verticesArray ~= vertexCount) then alpha = 1 end -- Don't mix from uninitialized slot vertices.
|
if (#verticesArray ~= vertexCount) then alpha = 1 end -- Don't mix from uninitialized slot vertices.
|
||||||
local vertices = utils.setArraySize(verticesArray, vertexCount)
|
local vertices = utils.setArraySize(verticesArray, vertexCount)
|
||||||
|
|
||||||
@ -803,7 +846,14 @@ function Animation.DrawOrderTimeline.new (frameCount)
|
|||||||
return;
|
return;
|
||||||
end
|
end
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
for i,slot in ipairs(slots) do
|
||||||
|
drawOrder[i] = slots[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local frame
|
local frame
|
||||||
if time >= frames[zlen(frames) - 1] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - 1] then -- Time is after last frame.
|
||||||
@ -855,9 +905,15 @@ function Animation.IkConstraintTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local constraint = skeleton.ikConstraints[self.ikConstraintIndex]
|
local constraint = skeleton.ikConstraints[self.ikConstraintIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
constraint.mix = constraint.data.mix
|
||||||
|
constraint.bendDirection = constraint.data.bendDirection
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
||||||
if setupPose then
|
if setupPose then
|
||||||
@ -931,9 +987,18 @@ function Animation.TransformConstraintTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if time < frames[0] then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local constraint = skeleton.transformConstraints[self.transformConstraintIndex]
|
local constraint = skeleton.transformConstraints[self.transformConstraintIndex]
|
||||||
|
if time < frames[0] then
|
||||||
|
if setupPose then
|
||||||
|
local data = constraint.data
|
||||||
|
constraint.rotateMix = data.rotateMix
|
||||||
|
constraint.translateMix = data.translateMix
|
||||||
|
constraint.scaleMix = data.scaleMix
|
||||||
|
constraint.shearMix = data.shearMix
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local rotate = 0
|
local rotate = 0
|
||||||
local translate = 0
|
local translate = 0
|
||||||
@ -1003,9 +1068,14 @@ function Animation.PathConstraintPositionTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if (time < frames[0]) then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
||||||
|
if (time < frames[0]) then
|
||||||
|
if setupPose then
|
||||||
|
constraint.position = constraint.data.position
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local position = 0
|
local position = 0
|
||||||
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
||||||
@ -1055,9 +1125,14 @@ function Animation.PathConstraintSpacingTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if (time < frames[0]) then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
||||||
|
if (time < frames[0]) then
|
||||||
|
if setupPose then
|
||||||
|
constraint.spacing = constraint.data.spacing
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local spacing = 0
|
local spacing = 0
|
||||||
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
if time >= frames[zlen(frames) - ENTRIES] then -- Time is after last frame.
|
||||||
@ -1111,9 +1186,15 @@ function Animation.PathConstraintMixTimeline.new (frameCount)
|
|||||||
|
|
||||||
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
function self:apply (skeleton, lastTime, time, firedEvents, alpha, setupPose, mixingOut)
|
||||||
local frames = self.frames
|
local frames = self.frames
|
||||||
if (time < frames[0]) then return end -- Time is before first frame.
|
|
||||||
|
|
||||||
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
local constraint = skeleton.pathConstraints[self.pathConstraintIndex]
|
||||||
|
if (time < frames[0]) then
|
||||||
|
if setupPose then
|
||||||
|
constraint.rotateMix = constraint.data.rotateMix
|
||||||
|
constraint.translateMix = constraint.data.translateMix
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local rotate = 0
|
local rotate = 0
|
||||||
local translate = 0
|
local translate = 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user