Skip to content

Commit

Permalink
Made tweens wait until starting before initing and overriding
Browse files Browse the repository at this point in the history
  • Loading branch information
rxi committed Apr 24, 2014
1 parent 533d4fc commit 6e9e9b8
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions flux.lua
Original file line number Diff line number Diff line change
Expand Up @@ -86,21 +86,25 @@ function tween.new(obj, time, vars)
self._ease = "quadout"
self.vars = {}
for k, v in pairs(vars) do
self.vars[k] = { start = obj[k], diff = vars[k] - obj[k] }
self.vars[k] = v
end
return self
end


function tween:init()
for k, v in pairs(self.vars) do
self.vars[k] = { start = self.obj[k], diff = v - self.obj[k] }
end
self.inited = true
end


function tween:after(...)
local t = tween.new(...)
t.parent = self.parent
self:oncomplete(
function()
for k, v in pairs(t.vars) do
v.diff = v.diff + (v.start - t.obj[k])
v.start = t.obj[k]
end
flux.add(self.parent, t)
end)
return t
Expand All @@ -124,6 +128,10 @@ function flux:update(deltatime)
if t._delay > 0 then
t._delay = t._delay - deltatime
else
if not t.inited then
flux.clear(self, t.obj, t.vars)
t:init()
end
if t._onstart then
t._onstart()
t._onstart = nil
Expand All @@ -144,12 +152,16 @@ function flux:update(deltatime)
end


function flux:add(tween)
function flux:clear(obj, vars)
for i, t in ipairs(self) do
if t.obj == tween.obj then
for k in pairs(tween.vars) do t.vars[k] = nil end
if t.inited and t.obj == obj then
for k in pairs(vars) do t.vars[k] = nil end
end
end
end


function flux:add(tween)
tween.parent = self
table.insert(self, tween)
return tween
Expand Down

0 comments on commit 6e9e9b8

Please sign in to comment.