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