Make animation speed independent of config.fps, add config.animation_rate to fine-tune animation speed (#93)
* animation rate config field * @franko's math magic to make it look more correct
This commit is contained in:
parent
3af6af654b
commit
844ecd1f26
|
@ -19,6 +19,7 @@ config.line_limit = 80
|
||||||
config.max_symbols = 4000
|
config.max_symbols = 4000
|
||||||
config.max_project_files = 2000
|
config.max_project_files = 2000
|
||||||
config.transitions = true
|
config.transitions = true
|
||||||
|
config.animation_rate = 1.0
|
||||||
config.blink_period = 0.8
|
config.blink_period = 0.8
|
||||||
|
|
||||||
-- Disable plugin loading setting to false the config entry
|
-- Disable plugin loading setting to false the config entry
|
||||||
|
|
|
@ -24,7 +24,10 @@ function View:move_towards(t, k, dest, rate)
|
||||||
if not config.transitions or math.abs(val - dest) < 0.5 then
|
if not config.transitions or math.abs(val - dest) < 0.5 then
|
||||||
t[k] = dest
|
t[k] = dest
|
||||||
else
|
else
|
||||||
t[k] = common.lerp(val, dest, rate or 0.5)
|
rate = common.clamp(rate or 0.5, 1e-8, 1 - 1e-8)
|
||||||
|
local alpha = math.log(1 - rate) * config.animation_rate
|
||||||
|
local dt = 60 / config.fps
|
||||||
|
t[k] = common.lerp(val, dest, 1 - math.exp(alpha * dt))
|
||||||
end
|
end
|
||||||
if val ~= dest then
|
if val ~= dest then
|
||||||
core.redraw = true
|
core.redraw = true
|
||||||
|
|
Loading…
Reference in New Issue