-
Notifications
You must be signed in to change notification settings - Fork 0
/
tw33n.lua
58 lines (45 loc) · 1.01 KB
/
tw33n.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
local tw33n = {}
tw33n.__index = tw33n
local tweens = {}
local values = {}
function tw33n.linear(ratio)
return ratio
end
function tw33n.quadIn(ratio)
return ratio * ratio
end
function tw33n.quadOut(ratio)
return ratio * (2 - ratio)
end
function tw33n.create(name, from, to, duration, ease)
local time = 0
local diff = to - from
local update = function(dt)
if time > duration then
values[name] = to
return true
end
time = time + dt
values[name] = from + diff * ease(time / duration)
return false
end
tweens[#tweens + 1] = update
end
function tw33n.update(dt)
for i = #tweens, 1, -1 do
-- Each tween returns true when finished
if tweens[i](dt) then
table.remove(tweens, i)
end
end
end
function tw33n.get(name)
return values[name]
end
local bound = {
update = function(...) return tw33n.update(...) end,
get = function(...) return tw33n.get(...) end,
create = function(...) return tw33n.create(...) end,
}
setmetatable(bound, tw33n)
return bound