cyberarm_engine 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: