From d69f514681dfb0b439c05edf85d20978b9aba2d2 Mon Sep 17 00:00:00 2001 From: Matias Date: Thu, 13 Jun 2013 13:39:24 +0300 Subject: [PATCH] remove findslot from skeleton and make it into a table, for faster lookups --- spine-lua/Animation.lua | 16 ++++++++-------- spine-lua/Skeleton.lua | 10 ++-------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/spine-lua/Animation.lua b/spine-lua/Animation.lua index 9f33f3144..8d5fb15c3 100644 --- a/spine-lua/Animation.lua +++ b/spine-lua/Animation.lua @@ -36,7 +36,7 @@ function Animation.new (name, timelines, duration) function self:apply (skeleton, time, loop) if not skeleton then error("skeleton cannot be nil.", 2) end - if loop and duration > 0 then time = time % duration end + if loop and duration then time = time % duration end for i,timeline in ipairs(self.timelines) do timeline:apply(skeleton, time, 1) @@ -46,7 +46,7 @@ function Animation.new (name, timelines, duration) function self:mix (skeleton, time, loop, alpha) if not skeleton then error("skeleton cannot be nil.", 2) end - if loop and duration > 0 then time = time % duration end + if loop and duration then time = time % duration end for i,timeline in ipairs(self.timelines) do timeline:apply(skeleton, time, alpha) @@ -371,11 +371,11 @@ function Animation.ColorTimeline.new () local g = lastFrameG + (frames[frameIndex + FRAME_G] - lastFrameG) * percent local b = lastFrameB + (frames[frameIndex + FRAME_B] - lastFrameB) * percent local a = lastFrameA + (frames[frameIndex + FRAME_A] - lastFrameA) * percent - if alpha < 1 then - slot:setColor(slot.r + (r - slot.r) * alpha, slot.g + (g - slot.g) * alpha, slot.b + (b - slot.b) * alpha, slot.a + (a - slot.a) * alpha) - else - slot:setColor(r, g, b, a) - end + --if alpha < 1 then + -- slot:setColor(slot.r + (r - color.r) * alpha, slot.g + (g - color.g) * alpha, slot.b + (b - color.b) * alpha, slot.a + (a - color.a) * alpha) + --else + slot:setColor(r, g, b, a) + --end end return self @@ -415,7 +415,7 @@ function Animation.AttachmentTimeline.new () local attachmentName = self.attachmentNames[frameIndex] local attachment if attachmentName then attachment = skeleton:getAttachment(self.slotName, attachmentName) end - skeleton:findSlot(self.slotName):setAttachment(attachment) + skeleton.slotsByName[self.slotName]:setAttachment(attachment) end return self diff --git a/spine-lua/Skeleton.lua b/spine-lua/Skeleton.lua index 2626de810..50d27a589 100644 --- a/spine-lua/Skeleton.lua +++ b/spine-lua/Skeleton.lua @@ -35,6 +35,7 @@ function Skeleton.new (skeletonData) data = skeletonData, bones = {}, slots = {}, + slotsByName = {}, drawOrder = {} } @@ -73,14 +74,6 @@ function Skeleton.new (skeletonData) return nil end - function self:findSlot (slotName) - if not slotName then error("slotName cannot be nil.", 2) end - for i,slot in ipairs(self.slots) do - if slot.data.name == slotName then return slot end - end - return nil - end - function self:setSkin (skinName) local newSkin if skinName then @@ -147,6 +140,7 @@ function Skeleton.new (skeletonData) local bone = self.bones[spine.utils.indexOf(skeletonData.bones, slotData.boneData)] local slot = Slot.new(slotData, self, bone) table.insert(self.slots, slot) + self.slotsByName[slot.data.name] = slot table.insert(self.drawOrder, slot) end