Sha256: 1cf2c3a61aa4aee4c3a6eec0b73c713e9d0fccb7ccf8d7ed2279550e2cd7e2ac
Contents?: true
Size: 1.42 KB
Versions: 4
Compression:
Stored size: 1.42 KB
Contents
module CyberarmEngine class Animator DEFAULT_TWEEN = :linear def initialize(start_time:, duration:, from:, to:, &block) @start_time = start_time @duration = duration @from = from.dup @to = to.dup @block = block end def update @block.call(self, @from, @to) if @block end def progress (@start_time.to_f + (Gosu.milliseconds - @start_time)) / (@start_time + @duration.to_f) end def complete? progress >= 1.0 end def transition(from, to, tween = DEFAULT_TWEEN) from + (to - from) * send("tween_#{tween}", progress) end def color_transition(from, to, _tween = DEFAULT_TWEEN) r = transition(from.red, to.red) g = transition(from.green, to.green) b = transition(from.blue, to.blue) a = transition(from.alpha, to.alpha) Gosu::Color.rgba(r, g, b, a) end def color_hsv_transition(from, to, tween = DEFAULT_TWEEN) hue = transition(from.hue, to.hue, tween) saturation = transition(from.saturation, to.saturation, tween) value = transition(from.value, to.value, tween) alpha = transition(from.alpha, to.alpha, tween) Gosu::Color.from_ahsv(alpha, hue, saturation, value) end # NOTE: Use this for future reference? https://github.com/danro/easing-js/blob/master/easing.js def tween_linear(t) t end def tween_sine(t) Math.sin(t) * t end end end
Version data entries
4 entries across 4 versions & 1 rubygems