Class: Ruby2D::Camera::Line

Inherits:
Line
  • Object
show all
Defined in:
lib/ruby2d/camera/line.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 = {}) ⇒ Line

Returns a new instance of Line.



33
34
35
36
37
# File 'lib/ruby2d/camera/line.rb', line 33

def initialize(opts = {})
  super(opts)
  Ruby2D::Camera << self
  Window.remove(self)
end

Instance Attribute Details

#xObject



50
51
52
# File 'lib/ruby2d/camera/line.rb', line 50

def x
  @x ||= 0
end

#yObject



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

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
# File 'lib/ruby2d/camera/line.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_width = width * Camera.zoom
  Ruby2D::Line.draw(x1: temp_x1, y1: temp_y1,
                    x2: temp_x2, y2: temp_y2,
                    width: temp_width,
                    color: [
                      [color.r, color.g, color.b, color.a],
                      [color.r, color.g, color.b, color.a],
                      [color.r, color.g, color.b, color.a],
                      [color.r, color.g, color.b, color.a]
                    ],
                    z: z)
end

#addObject



43
44
45
# File 'lib/ruby2d/camera/line.rb', line 43

def add
  @hide = false
end

#removeObject



39
40
41
# File 'lib/ruby2d/camera/line.rb', line 39

def remove
  @hide = true
end

#z=(z) ⇒ Object



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

def z=(z)
  super(z)
  Ruby2D::Camera._sort_by_z
end