cyberarm_engine 0.24.5 → 0.25.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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +8 -8
  3. data/.rubocop.yml +7 -7
  4. data/.travis.yml +5 -5
  5. data/Gemfile +6 -6
  6. data/Gemfile.lock +25 -24
  7. data/LICENSE.txt +21 -21
  8. data/README.md +74 -74
  9. data/Rakefile +10 -10
  10. data/assets/shaders/fragment/g_buffer.glsl +30 -30
  11. data/assets/shaders/fragment/lighting.glsl +115 -115
  12. data/assets/shaders/include/light_struct.glsl +11 -11
  13. data/assets/shaders/include/material_struct.glsl +16 -16
  14. data/assets/shaders/vertex/g_buffer.glsl +28 -28
  15. data/assets/shaders/vertex/lighting.glsl +24 -24
  16. data/bin/console +14 -14
  17. data/bin/setup +8 -8
  18. data/cyberarm_engine.gemspec +36 -36
  19. data/lib/cyberarm_engine/animator.rb +219 -219
  20. data/lib/cyberarm_engine/background.rb +158 -180
  21. data/lib/cyberarm_engine/background_image.rb +93 -93
  22. data/lib/cyberarm_engine/background_nine_slice.rb +142 -142
  23. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  24. data/lib/cyberarm_engine/builtin/intro_state.rb +130 -130
  25. data/lib/cyberarm_engine/cache/download_manager.rb +123 -123
  26. data/lib/cyberarm_engine/cache.rb +4 -4
  27. data/lib/cyberarm_engine/common.rb +131 -128
  28. data/lib/cyberarm_engine/config_file.rb +46 -46
  29. data/lib/cyberarm_engine/console/command.rb +157 -157
  30. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -43
  31. data/lib/cyberarm_engine/console/subcommand.rb +99 -99
  32. data/lib/cyberarm_engine/console.rb +248 -248
  33. data/lib/cyberarm_engine/game_object.rb +244 -244
  34. data/lib/cyberarm_engine/game_state.rb +124 -124
  35. data/lib/cyberarm_engine/gosu_ext/draw_arc.rb +111 -98
  36. data/lib/cyberarm_engine/gosu_ext/draw_circle.rb +30 -30
  37. data/lib/cyberarm_engine/gosu_ext/draw_path.rb +17 -17
  38. data/lib/cyberarm_engine/model/material.rb +21 -21
  39. data/lib/cyberarm_engine/model/mesh.rb +131 -131
  40. data/lib/cyberarm_engine/model/parser.rb +74 -74
  41. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -138
  42. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -154
  43. data/lib/cyberarm_engine/model.rb +216 -216
  44. data/lib/cyberarm_engine/model_cache.rb +31 -31
  45. data/lib/cyberarm_engine/notification.rb +82 -82
  46. data/lib/cyberarm_engine/notification_manager.rb +241 -241
  47. data/lib/cyberarm_engine/opengl/light.rb +52 -52
  48. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -46
  49. data/lib/cyberarm_engine/opengl/perspective_camera.rb +41 -41
  50. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -249
  51. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +167 -167
  52. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +307 -307
  53. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +33 -33
  54. data/lib/cyberarm_engine/opengl/shader.rb +408 -408
  55. data/lib/cyberarm_engine/opengl/texture.rb +69 -69
  56. data/lib/cyberarm_engine/opengl.rb +53 -53
  57. data/lib/cyberarm_engine/ray.rb +56 -56
  58. data/lib/cyberarm_engine/stats.rb +200 -200
  59. data/lib/cyberarm_engine/text.rb +260 -260
  60. data/lib/cyberarm_engine/timer.rb +23 -23
  61. data/lib/cyberarm_engine/transform.rb +296 -296
  62. data/lib/cyberarm_engine/trees/aabb_node.rb +126 -126
  63. data/lib/cyberarm_engine/trees/aabb_tree.rb +55 -55
  64. data/lib/cyberarm_engine/trees/aabb_tree_debug.rb +29 -29
  65. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -102
  66. data/lib/cyberarm_engine/ui/dsl.rb +142 -142
  67. data/lib/cyberarm_engine/ui/element.rb +662 -662
  68. data/lib/cyberarm_engine/ui/elements/button.rb +100 -100
  69. data/lib/cyberarm_engine/ui/elements/check_box.rb +54 -54
  70. data/lib/cyberarm_engine/ui/elements/container.rb +407 -404
  71. data/lib/cyberarm_engine/ui/elements/edit_box.rb +179 -179
  72. data/lib/cyberarm_engine/ui/elements/edit_line.rb +297 -297
  73. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -15
  74. data/lib/cyberarm_engine/ui/elements/image.rb +72 -72
  75. data/lib/cyberarm_engine/ui/elements/list_box.rb +79 -79
  76. data/lib/cyberarm_engine/ui/elements/menu.rb +27 -27
  77. data/lib/cyberarm_engine/ui/elements/menu_item.rb +6 -6
  78. data/lib/cyberarm_engine/ui/elements/progress.rb +93 -93
  79. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -6
  80. data/lib/cyberarm_engine/ui/elements/slider.rb +107 -107
  81. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -11
  82. data/lib/cyberarm_engine/ui/elements/text_block.rb +222 -216
  83. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +67 -67
  84. data/lib/cyberarm_engine/ui/event.rb +54 -54
  85. data/lib/cyberarm_engine/ui/gui_state.rb +326 -321
  86. data/lib/cyberarm_engine/ui/style.rb +61 -50
  87. data/lib/cyberarm_engine/ui/theme.rb +225 -225
  88. data/lib/cyberarm_engine/vector.rb +312 -312
  89. data/lib/cyberarm_engine/version.rb +4 -4
  90. data/lib/cyberarm_engine/window.rb +195 -195
  91. data/lib/cyberarm_engine.rb +76 -70
  92. data/mrbgem.rake +29 -29
  93. metadata +3 -3
@@ -1,154 +1,154 @@
1
- module CyberarmEngine
2
- class WavefrontParser < Model::Parser
3
- def self.handles
4
- [:obj]
5
- end
6
-
7
- def parse
8
- lines = 0
9
- list = File.read(@model.file_path).split("\n")
10
- list.each do |line|
11
- lines += 1
12
- line = line.strip
13
-
14
- array = line.split(" ")
15
- case array[0]
16
- when "mtllib"
17
- @model.material_file = array[1]
18
- parse_mtllib
19
- when "usemtl"
20
- set_material(array[1])
21
- when "o"
22
- change_object(nil, array[1])
23
- when "s"
24
- set_smoothing(array[1])
25
- when "v"
26
- add_vertex(array)
27
- when "vt"
28
- add_texture_coordinate(array)
29
-
30
- when "vn"
31
- add_normal(array)
32
-
33
- when "f"
34
- verts = []
35
- uvs = []
36
- norms = []
37
- array[1..3].each do |f|
38
- verts << f.split("/")[0]
39
- uvs << f.split("/")[1]
40
- norms << f.split("/")[2]
41
- end
42
-
43
- face = Face.new
44
- face.vertices = []
45
- face.uvs = []
46
- face.normals = []
47
- face.colors = []
48
- face.material = current_material
49
- face.smoothing = @model.smoothing
50
-
51
- mat = face.material.diffuse
52
- color = mat
53
-
54
- verts.each_with_index do |v, index|
55
- if uvs.first != ""
56
- face.vertices << @model.vertices[Integer(v) - 1]
57
- face.uvs << @model.uvs[Integer(uvs[index]) - 1]
58
- face.normals << @model.normals[Integer(norms[index]) - 1]
59
- face.colors << color
60
- else
61
- face.vertices << @model.vertices[Integer(v) - 1]
62
- face.uvs << nil
63
- face.normals << @model.normals[Integer(norms[index]) - 1]
64
- face.colors << color
65
- end
66
- end
67
-
68
- @model.current_object.faces << face
69
- @model.faces << face
70
- end
71
- end
72
-
73
- @model.calculate_bounding_box(@model.vertices, @model.bounding_box)
74
- @model.objects.each do |o|
75
- @model.calculate_bounding_box(o.vertices, o.bounding_box)
76
- end
77
- end
78
-
79
- def parse_mtllib
80
- file = File.open(@model.file_path.sub(File.basename(@model.file_path), "") + @model.material_file, "r")
81
- file.readlines.each do |line|
82
- array = line.strip.split(" ")
83
- case array.first
84
- when "newmtl"
85
- material = Model::Material.new(array.last)
86
- @model.current_material = array.last
87
- @model.materials[array.last] = material
88
- when "Ns" # Specular Exponent
89
- when "Ka" # Ambient color
90
- @model.materials[@model.current_material].ambient = Color.new(Float(array[1]), Float(array[2]),
91
- Float(array[3]))
92
- when "Kd" # Diffuse color
93
- @model.materials[@model.current_material].diffuse = Color.new(Float(array[1]), Float(array[2]),
94
- Float(array[3]))
95
- when "Ks" # Specular color
96
- @model.materials[@model.current_material].specular = Color.new(Float(array[1]), Float(array[2]),
97
- Float(array[3]))
98
- when "Ke" # Emissive
99
- when "Ni" # Unknown (Blender Specific?)
100
- when "d" # Dissolved (Transparency)
101
- when "illum" # Illumination model
102
- when "map_Kd" # Diffuse texture
103
- texture = File.basename(array[1])
104
- texture_path = "#{File.expand_path('../../', @model.file_path)}/textures/#{texture}"
105
- @model.materials[@model.current_material].set_texture(texture_path)
106
- end
107
- end
108
- end
109
-
110
- def set_smoothing(value)
111
- @model.smoothing = value == "1"
112
- end
113
-
114
- def add_vertex(array)
115
- @model.vertex_count += 1
116
- vert = nil
117
- if array.size == 5
118
- vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), Float(array[4]))
119
- elsif array.size == 4
120
- vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), 1.0)
121
- else
122
- raise
123
- end
124
- @model.current_object.vertices << vert
125
- @model.vertices << vert
126
- end
127
-
128
- def add_normal(array)
129
- vert = nil
130
- if array.size == 5
131
- vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), Float(array[4]))
132
- elsif array.size == 4
133
- vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), 1.0)
134
- else
135
- raise
136
- end
137
- @model.current_object.normals << vert
138
- @model.normals << vert
139
- end
140
-
141
- def add_texture_coordinate(array)
142
- texture = nil
143
- if array.size == 4
144
- texture = Vector.new(Float(array[1]), 1 - Float(array[2]), Float(array[3]))
145
- elsif array.size == 3
146
- texture = Vector.new(Float(array[1]), 1 - Float(array[2]), 1.0)
147
- else
148
- raise
149
- end
150
- @model.uvs << texture
151
- @model.current_object.uvs << texture
152
- end
153
- end
154
- end
1
+ module CyberarmEngine
2
+ class WavefrontParser < Model::Parser
3
+ def self.handles
4
+ [:obj]
5
+ end
6
+
7
+ def parse
8
+ lines = 0
9
+ list = File.read(@model.file_path).split("\n")
10
+ list.each do |line|
11
+ lines += 1
12
+ line = line.strip
13
+
14
+ array = line.split(" ")
15
+ case array[0]
16
+ when "mtllib"
17
+ @model.material_file = array[1]
18
+ parse_mtllib
19
+ when "usemtl"
20
+ set_material(array[1])
21
+ when "o"
22
+ change_object(nil, array[1])
23
+ when "s"
24
+ set_smoothing(array[1])
25
+ when "v"
26
+ add_vertex(array)
27
+ when "vt"
28
+ add_texture_coordinate(array)
29
+
30
+ when "vn"
31
+ add_normal(array)
32
+
33
+ when "f"
34
+ verts = []
35
+ uvs = []
36
+ norms = []
37
+ array[1..3].each do |f|
38
+ verts << f.split("/")[0]
39
+ uvs << f.split("/")[1]
40
+ norms << f.split("/")[2]
41
+ end
42
+
43
+ face = Face.new
44
+ face.vertices = []
45
+ face.uvs = []
46
+ face.normals = []
47
+ face.colors = []
48
+ face.material = current_material
49
+ face.smoothing = @model.smoothing
50
+
51
+ mat = face.material.diffuse
52
+ color = mat
53
+
54
+ verts.each_with_index do |v, index|
55
+ if uvs.first != ""
56
+ face.vertices << @model.vertices[Integer(v) - 1]
57
+ face.uvs << @model.uvs[Integer(uvs[index]) - 1]
58
+ face.normals << @model.normals[Integer(norms[index]) - 1]
59
+ face.colors << color
60
+ else
61
+ face.vertices << @model.vertices[Integer(v) - 1]
62
+ face.uvs << nil
63
+ face.normals << @model.normals[Integer(norms[index]) - 1]
64
+ face.colors << color
65
+ end
66
+ end
67
+
68
+ @model.current_object.faces << face
69
+ @model.faces << face
70
+ end
71
+ end
72
+
73
+ @model.calculate_bounding_box(@model.vertices, @model.bounding_box)
74
+ @model.objects.each do |o|
75
+ @model.calculate_bounding_box(o.vertices, o.bounding_box)
76
+ end
77
+ end
78
+
79
+ def parse_mtllib
80
+ file = File.open(@model.file_path.sub(File.basename(@model.file_path), "") + @model.material_file, "r")
81
+ file.readlines.each do |line|
82
+ array = line.strip.split(" ")
83
+ case array.first
84
+ when "newmtl"
85
+ material = Model::Material.new(array.last)
86
+ @model.current_material = array.last
87
+ @model.materials[array.last] = material
88
+ when "Ns" # Specular Exponent
89
+ when "Ka" # Ambient color
90
+ @model.materials[@model.current_material].ambient = Color.new(Float(array[1]), Float(array[2]),
91
+ Float(array[3]))
92
+ when "Kd" # Diffuse color
93
+ @model.materials[@model.current_material].diffuse = Color.new(Float(array[1]), Float(array[2]),
94
+ Float(array[3]))
95
+ when "Ks" # Specular color
96
+ @model.materials[@model.current_material].specular = Color.new(Float(array[1]), Float(array[2]),
97
+ Float(array[3]))
98
+ when "Ke" # Emissive
99
+ when "Ni" # Unknown (Blender Specific?)
100
+ when "d" # Dissolved (Transparency)
101
+ when "illum" # Illumination model
102
+ when "map_Kd" # Diffuse texture
103
+ texture = File.basename(array[1])
104
+ texture_path = "#{File.expand_path('../../', @model.file_path)}/textures/#{texture}"
105
+ @model.materials[@model.current_material].set_texture(texture_path)
106
+ end
107
+ end
108
+ end
109
+
110
+ def set_smoothing(value)
111
+ @model.smoothing = value == "1"
112
+ end
113
+
114
+ def add_vertex(array)
115
+ @model.vertex_count += 1
116
+ vert = nil
117
+ if array.size == 5
118
+ vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), Float(array[4]))
119
+ elsif array.size == 4
120
+ vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), 1.0)
121
+ else
122
+ raise
123
+ end
124
+ @model.current_object.vertices << vert
125
+ @model.vertices << vert
126
+ end
127
+
128
+ def add_normal(array)
129
+ vert = nil
130
+ if array.size == 5
131
+ vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), Float(array[4]))
132
+ elsif array.size == 4
133
+ vert = Vector.new(Float(array[1]), Float(array[2]), Float(array[3]), 1.0)
134
+ else
135
+ raise
136
+ end
137
+ @model.current_object.normals << vert
138
+ @model.normals << vert
139
+ end
140
+
141
+ def add_texture_coordinate(array)
142
+ texture = nil
143
+ if array.size == 4
144
+ texture = Vector.new(Float(array[1]), 1 - Float(array[2]), Float(array[3]))
145
+ elsif array.size == 3
146
+ texture = Vector.new(Float(array[1]), 1 - Float(array[2]), 1.0)
147
+ else
148
+ raise
149
+ end
150
+ @model.uvs << texture
151
+ @model.current_object.uvs << texture
152
+ end
153
+ end
154
+ end