Class: Ruby2D::Camera::Quad

Inherits:
Quad
  • Object
show all
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

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

#xObject



54
55
56
# File 'lib/ruby2d/camera/quad.rb', line 54

def x
  @x ||= 0
end

#yObject



58
59
60
# File 'lib/ruby2d/camera/quad.rb', line 58

def y
  @y ||= 0
end

Instance Method Details

#_drawObject

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

#addObject



47
48
49
# File 'lib/ruby2d/camera/quad.rb', line 47

def add
  @hide = false
end

#removeObject



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