Class: Ruby2D::Camera::Quad
- Inherits:
-
Quad
- Object
- Quad
- Ruby2D::Camera::Quad
- Defined in:
- lib/ruby2d/camera/quad.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 = {}) ⇒ Quad
constructor
A new instance of Quad.
- #remove ⇒ Object
- #z=(z) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Quad
Returns a new instance of Quad.
37 38 39 40 41 |
# File 'lib/ruby2d/camera/quad.rb', line 37 def initialize(opts = {}) super(opts) Ruby2D::Camera << self Window.remove(self) end |
Instance Attribute Details
#x ⇒ Object
54 55 56 |
# File 'lib/ruby2d/camera/quad.rb', line 54 def x @x ||= 0 end |
#y ⇒ Object
58 59 60 |
# File 'lib/ruby2d/camera/quad.rb', line 58 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/quad.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
47 48 49 |
# File 'lib/ruby2d/camera/quad.rb', line 47 def add @hide = false end |
#remove ⇒ Object
43 44 45 |
# File 'lib/ruby2d/camera/quad.rb', line 43 def remove @hide = true end |
#z=(z) ⇒ Object
62 63 64 65 |
# File 'lib/ruby2d/camera/quad.rb', line 62 def z=(z) super(z) Ruby2D::Camera._sort_by_z end |