blob: 8748ce5fb1ff789d6f946481f3c2b0e22a053982 (
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
|
# frozen_string_literal: true
require_relative 'adapt_triangle'
module Camera
class <<self
private
def objects
@objects ||= []
end
end
def self.<<(item)
item.extend AdaptTriangle if item.is_a? Triangle
objects.push(item) unless objects.include?(item)
end
def self.x
@x ||= 0
end
def self.x=(x)
angle = Camera.angle * (Math::PI / 180)
@y -= (-self.x + x) * Math.sin(-angle)
@x -= (-self.x + x) * Math.cos(-angle)
objects.each(&:_update)
end
def self.y
@y ||= 0
end
def self.y=(y)
angle = Camera.angle * (Math::PI / 180)
@x -= -(-self.y + y) * Math.sin(-angle)
@y -= (-self.y + y) * Math.cos(-angle)
objects.each(&:_update)
end
def self.zoom
@zoom ||= 1.0
end
def self.zoom=(zoom)
#TODO
@zoom = zoom
end
def self.angle
@angle ||= 0
end
def self.angle=(angle)
@angle = angle
objects.each(&:_update)
end
end
|