Class: Ruby2D::Camera::Square

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

Returns a new instance of Square.



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ruby2d/camera/square.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

#xObject



62
63
64
# File 'lib/ruby2d/camera/square.rb', line 62

def x
  @x ||= 0
end

#yObject



66
67
68
# File 'lib/ruby2d/camera/square.rb', line 66

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/square.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



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

def add
  @hide = false
end

#removeObject



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

def remove
  @hide = true
end

#z=(z) ⇒ Object



70
71
72
73
# File 'lib/ruby2d/camera/square.rb', line 70

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