summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-08-07 17:07:36 -0400
committerrealtradam <[email protected]>2021-08-07 17:07:36 -0400
commit772ea8650f04fefae7eea7dcd36fe05df381f832 (patch)
tree8d9168d0f3427d6baf302d5cc651092ca16b8c07
parent8fb5bfdf72c54dbc9161f3be6ebdc1c9e7bcc384 (diff)
downloadruby2d-camera-772ea8650f04fefae7eea7dcd36fe05df381f832.tar.gz
ruby2d-camera-772ea8650f04fefae7eea7dcd36fe05df381f832.zip
images
-rw-r--r--lib/ruby2d/camera/circle.rb7
-rw-r--r--lib/ruby2d/camera/image.rb29
-rw-r--r--test.rb2
3 files changed, 33 insertions, 5 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
diff --git a/test.rb b/test.rb
index 6af285c..24d8c0f 100644
--- a/test.rb
+++ b/test.rb
@@ -1,7 +1,7 @@
require 'ruby2d'
require 'ruby2d/camera'
-Camera::Circle.new
+Camera::Image.new('./assets/bricktexture.png')
update do
Camera.x = get(:mouse_x)