diff options
Diffstat (limited to 'lib/ruby2d')
| -rw-r--r-- | lib/ruby2d/camera/circle.rb | 7 | ||||
| -rw-r--r-- | lib/ruby2d/camera/image.rb | 29 |
2 files changed, 32 insertions, 4 deletions
diff --git a/lib/ruby2d/camera/circle.rb b/lib/ruby2d/camera/circle.rb index a7416a2..ea841f5 100644 --- a/lib/ruby2d/camera/circle.rb +++ b/lib/ruby2d/camera/circle.rb @@ -14,14 +14,13 @@ module Ruby2D temp_radius = @radius * Camera.zoom temp_x = (((@x - Ruby2D::Camera.x + radius) * Math.cos(angle)) - ((@y - Ruby2D::Camera.y + radius) * Math.sin(angle))) * Ruby2D::Camera.zoom + half_width temp_y = (((@x - Ruby2D::Camera.x + radius) * Math.sin(angle)) + ((@y - Ruby2D::Camera.y + radius) * Math.cos(angle))) * Ruby2D::Camera.zoom + half_height - Ruby2D::Circle.draw(x: temp_x, y: tempy, + Ruby2D::Circle.draw(x: temp_x, y: temp_y, radius: temp_radius, - sectors: @sectors, + sectors: self.sectors, color: [self.color.r, self.color.g, self.color.b, self.color.a]) - end - def initialize(otps= {}) + def initialize(opts= {}) super(opts) Ruby2D::Camera << self self.remove diff --git a/lib/ruby2d/camera/image.rb b/lib/ruby2d/camera/image.rb new file mode 100644 index 0000000..ec229b1 --- /dev/null +++ b/lib/ruby2d/camera/image.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Camera + # Wraps existing variables as well as adding new methods + # so that it can be handled by the Camera Module + class Image < Ruby2D::Image + # Recalculates real coordiantes + # Use after changing variables + def _draw + angle = Camera.angle * (Math::PI / 180) + half_width = Window.width * 0.5 + half_height = Window.height * 0.5 + offset_x = x + (width / 2) + offset_y = y + (height / 2) + temp_x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \ + * Camera.zoom + half_width - (width * Camera.zoom / 2) + temp_y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \ + * Camera.zoom + half_height - (height * Camera.zoom / 2) + temp_rotate = rotate + Camera.angle + temp_width = width * Camera.zoom + temp_height = height * Camera.zoom + self.draw(x: temp_x, y: temp_y, + width: temp_width, + height: temp_height, + rotate: temp_rotate, + color: [self.color.r, self.color.g, self.color.b, self.color.a]) + end + end +end |
