Class: Ruby2D::Camera::Sprite

Inherits:
Sprite
  • Object
show all
Defined in:
lib/ruby2d/camera/sprite.rb

Overview

Wraps existing variables as well as adding new methods so that it can be handled by the Camera Module

Instance Method Summary collapse

Constructor Details

#initialize(path, opts = {}) ⇒ Sprite

Returns a new instance of Sprite.



46
47
48
49
50
# File 'lib/ruby2d/camera/sprite.rb', line 46

def initialize(path, opts = {})
  super(path, opts)
  Ruby2D::Camera << self
  Window.remove(self)
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
36
37
38
39
40
41
42
43
44
# File 'lib/ruby2d/camera/sprite.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
  offset_x = @x + (width / 2)
  offset_y = @y + (height / 2)
  temp_x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \
    * Camera.zoom + half_width - (width * Camera.zoom / 2)
  temp_y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \
    * Camera.zoom + half_height - (height * Camera.zoom / 2)
  temp_rotate = rotate + Camera.angle
  temp_width = width * Camera.zoom
  temp_height = height * Camera.zoom
  case @flip
  when :both
    temp_x += temp_height
    temp_y += temp_width
    temp_width = -temp_width
    temp_height = -temp_height
    puts 'both'
  when :horizontal
    temp_y += temp_width
    temp_height = -temp_height
  when :vertical
    temp_width = -temp_width
    temp_x += temp_height
  end
  draw(x: temp_x, y: temp_y,
       width: temp_width,
       height: temp_height,
       rotate: temp_rotate)
  update
end

#addObject



61
62
63
# File 'lib/ruby2d/camera/sprite.rb', line 61

def add
  @hide = false
end

#removeObject



57
58
59
# File 'lib/ruby2d/camera/sprite.rb', line 57

def remove
  @hide = true
end

#z=(z) ⇒ Object



52
53
54
55
# File 'lib/ruby2d/camera/sprite.rb', line 52

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