blob: c8f166706a619ba304e5e2e170b45118d5504a1b (
plain)
1
2
3
4
5
6
7
8
9
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# frozen_string_literal: true
require_relative "camera/version"
require_relative "camera/triangle"
#Dir[File.join(__dir__, 'camera', '*.rb')].sort.each { |file| require file }
# Handles rendering objects relative
# to a camera location
module Ruby2D
module Camera
class <<self
private
# Contains all objects that are tracked
def objects
@objects ||= []
end
end
def self.debug_x
@debug_x ||= 0
end
def self.debug_x=(debug_x)
@debug_x = debug_x
end
def self.debug_y
@debug_y ||= 0
end
def self.debug_y=(debug_y)
@debug_y = debug_y
end
# Adding objects so they are
# tracked by the Camera
def self.<<(item)
=begin
case item
when Triangle
item.extend Camera::TriangleWrapped
when Square
item.extend Camera::SquareWrapped
when Rectangle
item.extend Camera::RectangleWrapped
when Quad
item.extend Camera::QuadWrapped
when Line
item.extend Camera::LineWrapped
when Circle
item.extend Camera::CircleWrapped
when Image
item.extend Camera::ImageWrapped
when Sprite
item.extend Camera::SpriteWrapped
when Text
item.extend Camera::TextWrapped
else
puts 'Warning: Non-standard Object added to Camera'
puts ' Object may not behave as expected'
end
=end
objects.push(item) unless objects.include?(item)
end
def self.remove(item)
objects.delete(item) if objects.include?(item)
end
# Redraw all objects that
# are tracked by the Camera
def self.redraw(auto_purge: false)
#if auto_purge
# objects.each do |item|
# if item.nil?
# puts "Warning: Nil Object detected in Camera"
# puts " Nil Object removed"
# objects.delete(obj)
# else
# item.redraw
# end
# end
#else
objects.each(&:_draw)
#end
end
# Variables changing Camera properties
def self._x(x)
@x += x
end
def self._y(y)
@y += y
end
def self.x
@x ||= 0
end
def self.x=(x)
@x = x
end
def self.y
@y ||= 0
end
def self.y=(y)
@y = y
end
def self.zoom
@zoom ||= 1.0
end
def self.zoom=(zoom)
@zoom = zoom
end
def self.angle
@angle ||= 0
end
def self.angle=(angle)
angle %= 360
@angle = angle
end
end
end
|