Class: Ruby2D::Camera::Rectangle
- Inherits:
-
Rectangle
- Object
- Rectangle
- Ruby2D::Camera::Rectangle
- Defined in:
- lib/ruby2d/camera/rectangle.rb
Overview
Wraps existing variables as well as adding new methods so that it can be handled by the Camera Module
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#_draw ⇒ Object
Recalculates real coordiantes Use after changing variables.
- #add ⇒ Object
-
#initialize(opts = {}) ⇒ Rectangle
constructor
A new instance of Rectangle.
- #remove ⇒ Object
- #z=(z) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Rectangle
Returns a new instance of Rectangle.
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/ruby2d/camera/rectangle.rb', line 37 def initialize(opts = {}) super(opts) Ruby2D::Camera << self Window.remove(self) @x1 -= @x @x2 -= @x @x3 -= @x @x4 -= @x @y1 -= @y @y2 -= @y @y3 -= @y @y4 -= @y end |
Instance Attribute Details
#x ⇒ Object
62 63 64 |
# File 'lib/ruby2d/camera/rectangle.rb', line 62 def x @x ||= 0 end |
#y ⇒ Object
66 67 68 |
# File 'lib/ruby2d/camera/rectangle.rb', line 66 def y @y ||= 0 end |
Instance Method Details
#_draw ⇒ Object
Recalculates real coordiantes Use after changing variables
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ruby2d/camera/rectangle.rb', line 10 def _draw return if @hide angle = Camera.angle * (Math::PI / 180) half_width = Window.width * 0.5 half_height = Window.height * 0.5 temp_x1 = (((x + x1 - Camera.x) * Math.cos(angle)) - ((y + y1 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width temp_y1 = (((x + x1 - Camera.x) * Math.sin(angle)) + ((y + y1 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height temp_x2 = (((x + x2 - Camera.x) * Math.cos(angle)) - ((y + y2 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width temp_y2 = (((x + x2 - Camera.x) * Math.sin(angle)) + ((y + y2 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height temp_x3 = (((x + x3 - Camera.x) * Math.cos(angle)) - ((y + y3 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width temp_y3 = (((x + x3 - Camera.x) * Math.sin(angle)) + ((y + y3 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height temp_x4 = (((x + x4 - Camera.x) * Math.cos(angle)) - ((y + y4 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width temp_y4 = (((x + x4 - Camera.x) * Math.sin(angle)) + ((y + y4 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height Ruby2D::Quad.draw(x1: temp_x1, y1: temp_y1, x2: temp_x2, y2: temp_y2, x3: temp_x3, y3: temp_y3, x4: temp_x4, y4: temp_y4, color: [ [c1.r, c1.g, c1.b, c1.a], [c2.r, c2.g, c2.b, c2.a], [c3.r, c3.g, c3.b, c3.a], [c4.r, c4.g, c4.b, c4.a] ], z: z) end |
#add ⇒ Object
55 56 57 |
# File 'lib/ruby2d/camera/rectangle.rb', line 55 def add @hide = false end |
#remove ⇒ Object
51 52 53 |
# File 'lib/ruby2d/camera/rectangle.rb', line 51 def remove @hide = true end |
#z=(z) ⇒ Object
70 71 72 73 |
# File 'lib/ruby2d/camera/rectangle.rb', line 70 def z=(z) super(z) Ruby2D::Camera._sort_by_z end |