class SK::Camera
Attributes
speed[RW]
Public Class Methods
new(screen_size)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 6 def initialize screen_size @screen_size = screen_size / 2.0 @target = Vec2.new @speed = 0.05 end
Public Instance Methods
lerp(x, y, w)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 39 def lerp x, y, w x + (y - x) * w end
move(x, y)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 20 def move x, y @target.x = x @target.y = y end
move_by(x, y)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 25 def move_by x, y @target.x += x @target.y += y end
set_zoom(zoom)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 34 def set_zoom zoom transform.scale.x = zoom transform.scale.y = zoom end
update(dt)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 43 def update dt # TODO: apply delta to smooth movement transform.position.x = lerp(transform.position.x, @target.x, @speed) transform.position.y = lerp(transform.position.y, @target.y, @speed) end
view(window, &block)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 49 def view window, &block window.translate(@screen_size.x, @screen_size.y) do window.scale(transform.scale.x, transform.scale.y) do window.translate(-transform.position.x, -transform.position.y) do block.call() end end end end
x()
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 12 def x -transform.position.x + (@screen_size.x / 2.0) end
y()
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 16 def y -transform.position.y + (@screen_size.y / 2.0) end
zoom_by(factor)
click to toggle source
# File lib/shirokuro/standard_components/cameras/camera.rb, line 30 def zoom_by factor transform.scale += factor end