diff options
| author | realtradam <[email protected]> | 2021-04-20 05:59:38 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-04-20 05:59:38 -0400 |
| commit | 72084e270bd849c74b18bfcbb6a0d454035c4897 (patch) | |
| tree | 39fa5d85e081253f4759fda7d11173300d1a17ff /camera.rb | |
| parent | 69d5a3c712028b0448489c89243618b864dd02ea (diff) | |
| download | ruby2d-camera-old-72084e270bd849c74b18bfcbb6a0d454035c4897.tar.gz ruby2d-camera-old-72084e270bd849c74b18bfcbb6a0d454035c4897.zip | |
.
Diffstat (limited to 'camera.rb')
| -rw-r--r-- | camera.rb | 49 |
1 files changed, 43 insertions, 6 deletions
@@ -16,14 +16,46 @@ module Camera objects.push(item) unless objects.include?(item) end + def self.center_x + x + ((Window.width / 2) * (1/zoom)) + end + + def self.center_x=(center_x) + @x = center_x - ((Window.width / 2) * (1/zoom)) + objects.each(&:_update) + end + + def self.center_y + y + ((Window.height / 2) * (1/zoom)) + end + + def self.center_y=(center_y) + @y = center_y - ((Window.height / 2) * (1/zoom)) + objects.each(&:_update) + end + def self.center(center_x, center_y) + self.center_y = center_y + self.center_x = center_y + #@y = center_y + #@x = center_x + angle = Math::PI / 180 * (Camera.angle + (1 * 45)) + offset_angle = Math::PI / 180 * 45 + x = (Math.cos(angle) - Math.cos(offset_angle)) * (Window.width/2) * Math.sqrt(2) * (1 / zoom) + y = (Math.sin(angle) - Math.sin(offset_angle)) * (Window.height/2) * Math.sqrt(2) * (1 / zoom) + @x += x + @y += y + #@x = x + ((pivot_x - x) * Math.cos(angle)) - ((pivot_y - y) * Math.sin(angle)) + #@y = y + ((pivot_x - x) * Math.sin(angle)) + ((pivot_y - y) * Math.cos(angle)) + objects.each(&:_update) + end def self.x @x ||= 0 end def self.x=(x) angle = Camera.angle * (Math::PI / 180) - @y -= (-self.x + x) * Math.sin(-angle) - @x -= (-self.x + x) * Math.cos(-angle) + @y += (x - self.x) * Math.sin(-angle) + @x += (x - self.x) * Math.cos(-angle) objects.each(&:_update) end @@ -33,8 +65,8 @@ module Camera def self.y=(y) angle = Camera.angle * (Math::PI / 180) - @x -= -(-self.y + y) * Math.sin(-angle) - @y -= (-self.y + y) * Math.cos(-angle) + @x += -(y - self.y) * Math.sin(-angle) + @y += (y - self.y) * Math.cos(-angle) objects.each(&:_update) end @@ -43,8 +75,13 @@ module Camera end def self.zoom=(zoom) - #TODO - @zoom = zoom + if zoom != self.zoom + temp = [center_x, center_y] + @zoom = zoom + self.center_x = temp[0] + self.center_y = temp[1] + objects.each(&:_update) + end end def self.angle |
