cyberarm_engine 0.11.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b680809ffa30c299b4faaf76386a503e2ed4cc60c85a88f73eaa47a2cc2c27b8
4
- data.tar.gz: 0caab436dc9de940673943b00ed58a84352c58dd8b3af25d418d83e3f9783397
3
+ metadata.gz: a654f69d082340608b25fd743b95470de31dc21e1fa2a6316937551b805aa4ec
4
+ data.tar.gz: b8d0adc99e32f01656df9e954eceada2fe2592c04c4b53500b17281343c3bc0d
5
5
  SHA512:
6
- metadata.gz: 5224d608ffa05beb75a4c32a86630aa80c36981a888f2722424bbcd896962fb011d07ec67c1e1a35e6300c8882652a94f02d49109a3173129e97f02f8567f019
7
- data.tar.gz: d07439c606ac40cd5dfedd2844314ebed498a1c60200bcf183756855ae1f9374840de69329c62f58cd3dd3fab0e552878ac05653662dc7b6c256a78106186ece
6
+ metadata.gz: d8092e64eecea46ddc30d14088f3aa9b66de47c03884094e60b6529eca16d88e26ebee2d9a96321de6ad7fab5c4b0b7a453c1e82668806c8c82babbf5a64def5
7
+ data.tar.gz: b56daafd58276d545093a63e5c4bac0f846737ec856fed97ad0ec9d75afd75165dfb27f63f2253df660af6c81028216166b20b3354d2e8ce0d47a1b3c2983bdb
@@ -5,7 +5,6 @@ rescue LoadError => e
5
5
  require "gosu"
6
6
  end
7
7
 
8
-
9
8
  require_relative "cyberarm_engine/version"
10
9
 
11
10
  require_relative "cyberarm_engine/common"
@@ -13,14 +12,15 @@ require_relative "cyberarm_engine/common"
13
12
  require_relative "cyberarm_engine/game_object"
14
13
  require_relative "cyberarm_engine/engine"
15
14
 
16
- require_relative "cyberarm_engine/lib/bounding_box"
17
- require_relative "cyberarm_engine/lib/vector"
18
- require_relative "cyberarm_engine/lib/ray"
19
- require_relative "cyberarm_engine/lib/shader" if defined?(OpenGL)
15
+ require_relative "cyberarm_engine/bounding_box"
16
+ require_relative "cyberarm_engine/vector"
17
+ require_relative "cyberarm_engine/transform"
18
+ require_relative "cyberarm_engine/ray"
19
+ require_relative "cyberarm_engine/shader" if defined?(OpenGL)
20
20
  require_relative "cyberarm_engine/background"
21
21
 
22
- require_relative "cyberarm_engine/objects/text"
23
- require_relative "cyberarm_engine/objects/timer"
22
+ require_relative "cyberarm_engine/text"
23
+ require_relative "cyberarm_engine/timer"
24
24
 
25
25
  require_relative "cyberarm_engine/ui/theme"
26
26
  require_relative "cyberarm_engine/ui/event"
@@ -54,7 +54,7 @@ module CyberarmEngine
54
54
  return Gosu::Color.rgba(color.red, color.green, color.blue, alpha)
55
55
  end
56
56
 
57
- def get_asset(path, hash, klass)
57
+ def get_asset(path, hash, klass, retro = false, tileable = false)
58
58
  asset = nil
59
59
  hash.detect do |_asset, instance|
60
60
  if _asset == path
@@ -64,7 +64,12 @@ module CyberarmEngine
64
64
  end
65
65
 
66
66
  unless asset
67
- instance = klass.new(path)
67
+ instance = nil
68
+ if klass == Gosu::Image
69
+ instance = klass.new(path, retro: retro, tileable: tileable)
70
+ else
71
+ instance = klass.new(path)
72
+ end
68
73
  hash[path] = instance
69
74
  asset = instance
70
75
  end
@@ -72,8 +77,8 @@ module CyberarmEngine
72
77
  return asset
73
78
  end
74
79
 
75
- def get_image(path)
76
- get_asset(path, Engine::IMAGES, Gosu::Image)
80
+ def get_image(path, retro: false, tileable: false)
81
+ get_asset(path, Engine::IMAGES, Gosu::Image, retro, tileable)
77
82
  end
78
83
 
79
84
  def get_sample(path)
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,84 @@
1
+ module CyberarmEngine
2
+ class Transform
3
+ attr_reader :elements
4
+ def initialize(matrix)
5
+ @elements = matrix
6
+
7
+ raise "Transform is wrong size! Got #{@elements.size}, expected 16" if 16 != @elements.size
8
+ end
9
+
10
+ def self.rotate(angle, rotate_around = nil)
11
+ double c = Math.cos(angle).degrees_to_radians
12
+ double s = Math.sin(angle).degrees_to_radians
13
+ matrix = [
14
+ +c, +s, 0, 0,
15
+ -s, +c, 0, 0,
16
+ 0, 0, 1, 0,
17
+ 0, 0, 0, 1,
18
+ ]
19
+
20
+ rotate_matrix = Transform.new(matrix, rows: 4, columns: 4)
21
+
22
+ if rotate_around && (rotate_around.x != 0.0 || rotate_around.y != 0.0)
23
+ negative_rotate_around = Vector.new(-rotate_around.x, -rotate_around.y, -rotate_around.z)
24
+
25
+ rotate_matrix = concat(
26
+ concat(translate(negative_rotate_around), rotate_matrix),
27
+ translate(rotate_around)
28
+ )
29
+ end
30
+
31
+ return rotate_matrix
32
+ end
33
+
34
+ def self.translate(vector)
35
+ x, y, z = vector.to_a[0..2]
36
+ matrix = [
37
+ 1, 0, 0, 0,
38
+ 0, 1, 0, 0,
39
+ 0, 0, 1, 0,
40
+ x, y, z, 1,
41
+ ]
42
+
43
+ Transform.new(matrix)
44
+ end
45
+
46
+ def self.scale(vector, center_around = nil)
47
+ scale_x, scale_y, scale_z = vector.to_a[0..2]
48
+ matrix = [
49
+ scale_x, 0, 0, 0,
50
+ 0, scale_y, 0, 0,
51
+ 0, 0, scale_z, 0,
52
+ 0, 0, 0, 1,
53
+ ]
54
+
55
+ scale_matrix = Transform.new(matrix)
56
+
57
+ if center_around && (center_around.x != 0.0 || center_around.y != 0.0)
58
+ negative_center_around = Vector.new(-center_around.x, -center_around.y, -center_around.z)
59
+
60
+ scale_matrix = concat(
61
+ concat(translate(negative_center_around), scale_matrix),
62
+ translate(center_around)
63
+ )
64
+ end
65
+
66
+ return scale_matrix
67
+ end
68
+
69
+ def self.concat(left, right)
70
+ matrix = Array.new(left.elements.size)
71
+ rows = 4
72
+
73
+ matrix.size.times do |i|
74
+ matrix[i] = 0
75
+
76
+ rows.times do |j|
77
+ matrix[i] += left.elements[i / rows * rows + j] * right.elements[i % rows + j * rows]
78
+ end
79
+ end
80
+
81
+ Transform.new(matrix)
82
+ end
83
+ end
84
+ end
@@ -40,6 +40,9 @@ module CyberarmEngine
40
40
  def weight; @weight; end
41
41
  def weight=(n); @weight = n; end
42
42
 
43
+ alias w weight
44
+ alias w= weight=
45
+
43
46
  def ==(other)
44
47
  if other.is_a?(Numeric)
45
48
  @x == other &&
@@ -1,4 +1,4 @@
1
1
  module CyberarmEngine
2
2
  NAME = "InDev"
3
- VERSION = "0.11.1"
3
+ VERSION = "0.12.0"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyberarm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyberarm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-01 00:00:00.000000000 Z
11
+ date: 2019-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gosu
@@ -84,16 +84,16 @@ files:
84
84
  - cyberarm_engine.gemspec
85
85
  - lib/cyberarm_engine.rb
86
86
  - lib/cyberarm_engine/background.rb
87
+ - lib/cyberarm_engine/bounding_box.rb
87
88
  - lib/cyberarm_engine/common.rb
88
89
  - lib/cyberarm_engine/engine.rb
89
90
  - lib/cyberarm_engine/game_object.rb
90
91
  - lib/cyberarm_engine/game_state.rb
91
- - lib/cyberarm_engine/lib/bounding_box.rb
92
- - lib/cyberarm_engine/lib/ray.rb
93
- - lib/cyberarm_engine/lib/shader.rb
94
- - lib/cyberarm_engine/lib/vector.rb
95
- - lib/cyberarm_engine/objects/text.rb
96
- - lib/cyberarm_engine/objects/timer.rb
92
+ - lib/cyberarm_engine/ray.rb
93
+ - lib/cyberarm_engine/shader.rb
94
+ - lib/cyberarm_engine/text.rb
95
+ - lib/cyberarm_engine/timer.rb
96
+ - lib/cyberarm_engine/transform.rb
97
97
  - lib/cyberarm_engine/ui/border_canvas.rb
98
98
  - lib/cyberarm_engine/ui/dsl.rb
99
99
  - lib/cyberarm_engine/ui/element.rb
@@ -111,6 +111,7 @@ files:
111
111
  - lib/cyberarm_engine/ui/gui_state.rb
112
112
  - lib/cyberarm_engine/ui/style.rb
113
113
  - lib/cyberarm_engine/ui/theme.rb
114
+ - lib/cyberarm_engine/vector.rb
114
115
  - lib/cyberarm_engine/version.rb
115
116
  homepage: https://github.com/cyberarm/cyberarm_engine
116
117
  licenses: