cyberarm_engine 0.19.0 → 0.19.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) 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/LICENSE.txt +21 -21
  7. data/README.md +74 -74
  8. data/Rakefile +10 -10
  9. data/bin/console +14 -14
  10. data/bin/setup +8 -8
  11. data/cyberarm_engine.gemspec +39 -39
  12. data/lib/cyberarm_engine/animator.rb +219 -219
  13. data/lib/cyberarm_engine/background.rb +179 -179
  14. data/lib/cyberarm_engine/background_nine_slice.rb +142 -142
  15. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  16. data/lib/cyberarm_engine/builtin/intro_state.rb +130 -130
  17. data/lib/cyberarm_engine/cache/download_manager.rb +121 -121
  18. data/lib/cyberarm_engine/cache.rb +4 -4
  19. data/lib/cyberarm_engine/common.rb +113 -113
  20. data/lib/cyberarm_engine/config_file.rb +46 -46
  21. data/lib/cyberarm_engine/console/command.rb +157 -157
  22. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -43
  23. data/lib/cyberarm_engine/console/subcommand.rb +99 -99
  24. data/lib/cyberarm_engine/console.rb +248 -248
  25. data/lib/cyberarm_engine/game_object.rb +248 -248
  26. data/lib/cyberarm_engine/game_state.rb +97 -97
  27. data/lib/cyberarm_engine/model/material.rb +21 -21
  28. data/lib/cyberarm_engine/model/model_object.rb +131 -131
  29. data/lib/cyberarm_engine/model/parser.rb +74 -74
  30. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -138
  31. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -154
  32. data/lib/cyberarm_engine/model.rb +212 -212
  33. data/lib/cyberarm_engine/model_cache.rb +31 -31
  34. data/lib/cyberarm_engine/opengl/light.rb +50 -50
  35. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -46
  36. data/lib/cyberarm_engine/opengl/perspective_camera.rb +38 -38
  37. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -249
  38. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +164 -164
  39. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +298 -298
  40. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +22 -22
  41. data/lib/cyberarm_engine/opengl/shader.rb +406 -406
  42. data/lib/cyberarm_engine/opengl/texture.rb +69 -69
  43. data/lib/cyberarm_engine/opengl.rb +28 -28
  44. data/lib/cyberarm_engine/ray.rb +56 -56
  45. data/lib/cyberarm_engine/stats.rb +21 -21
  46. data/lib/cyberarm_engine/text.rb +197 -197
  47. data/lib/cyberarm_engine/timer.rb +23 -23
  48. data/lib/cyberarm_engine/transform.rb +296 -296
  49. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -102
  50. data/lib/cyberarm_engine/ui/dsl.rb +139 -139
  51. data/lib/cyberarm_engine/ui/element.rb +488 -488
  52. data/lib/cyberarm_engine/ui/elements/button.rb +97 -97
  53. data/lib/cyberarm_engine/ui/elements/check_box.rb +54 -54
  54. data/lib/cyberarm_engine/ui/elements/container.rb +256 -256
  55. data/lib/cyberarm_engine/ui/elements/edit_box.rb +179 -179
  56. data/lib/cyberarm_engine/ui/elements/edit_line.rb +263 -263
  57. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -15
  58. data/lib/cyberarm_engine/ui/elements/image.rb +72 -72
  59. data/lib/cyberarm_engine/ui/elements/list_box.rb +88 -82
  60. data/lib/cyberarm_engine/ui/elements/progress.rb +51 -51
  61. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -6
  62. data/lib/cyberarm_engine/ui/elements/slider.rb +104 -104
  63. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -11
  64. data/lib/cyberarm_engine/ui/elements/text_block.rb +162 -162
  65. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +65 -65
  66. data/lib/cyberarm_engine/ui/event.rb +54 -54
  67. data/lib/cyberarm_engine/ui/gui_state.rb +256 -256
  68. data/lib/cyberarm_engine/ui/style.rb +49 -49
  69. data/lib/cyberarm_engine/ui/theme.rb +207 -207
  70. data/lib/cyberarm_engine/vector.rb +293 -293
  71. data/lib/cyberarm_engine/version.rb +4 -4
  72. data/lib/cyberarm_engine/window.rb +120 -120
  73. data/lib/cyberarm_engine.rb +71 -71
  74. metadata +3 -3
@@ -1,164 +1,164 @@
1
- module CyberarmEngine
2
- class GBuffer
3
- attr_reader :screen_vbo, :vertices, :uvs
4
-
5
- def initialize(width:, height:)
6
- @width = width
7
- @height = height
8
-
9
- @framebuffer = nil
10
- @buffers = %i[position diffuse normal texcoord]
11
- @textures = {}
12
- @screen_vbo = nil
13
- @ready = false
14
-
15
- @vertices = [
16
- -1.0, -1.0, 0,
17
- 1.0, -1.0, 0,
18
- -1.0, 1.0, 0,
19
-
20
- -1.0, 1.0, 0,
21
- 1.0, -1.0, 0,
22
- 1.0, 1.0, 0
23
- ].freeze
24
-
25
- @uvs = [
26
- 0, 0,
27
- 1, 0,
28
- 0, 1,
29
-
30
- 0, 1,
31
- 1, 0,
32
- 1, 1
33
- ].freeze
34
-
35
- create_framebuffer
36
- create_screen_vbo
37
- end
38
-
39
- def create_framebuffer
40
- buffer = " " * 4
41
- glGenFramebuffers(1, buffer)
42
- @framebuffer = buffer.unpack1("L2")
43
-
44
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
45
-
46
- create_textures
47
-
48
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER)
49
-
50
- if status != GL_FRAMEBUFFER_COMPLETE
51
- message = ""
52
-
53
- message = case status
54
- when GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
55
- "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
56
- when GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
57
- "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
58
- when GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
59
- "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"
60
- when GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
61
- "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"
62
- when GL_FRAMEBUFFER_UNSUPPORTED
63
- "GL_FRAMEBUFFER_UNSUPPORTED"
64
- else
65
- "Unknown error!"
66
- end
67
- puts "Incomplete framebuffer: #{status}\nError: #{message}"
68
- else
69
- @ready = true
70
- end
71
-
72
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)
73
- end
74
-
75
- def create_textures
76
- @buffers.size.times do |i|
77
- buffer = " " * 4
78
- glGenTextures(1, buffer)
79
- texture_id = buffer.unpack1("L2")
80
- @textures[@buffers[i]] = texture_id
81
-
82
- glBindTexture(GL_TEXTURE_2D, texture_id)
83
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, @width, @height, 0, GL_RGBA, GL_FLOAT, nil)
84
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
85
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
86
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, texture_id, 0)
87
- end
88
-
89
- buffer = " " * 4
90
- glGenTextures(1, buffer)
91
- texture_id = buffer.unpack1("L2")
92
- @textures[:depth] = texture_id
93
-
94
- glBindTexture(GL_TEXTURE_2D, texture_id)
95
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, @width, @height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, nil)
96
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture_id, 0)
97
-
98
- draw_buffers = [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3]
99
- glDrawBuffers(draw_buffers.size, draw_buffers.pack("I*"))
100
- end
101
-
102
- def create_screen_vbo
103
- buffer = " " * 4
104
- glGenVertexArrays(1, buffer)
105
- @screen_vbo = buffer.unpack1("L2")
106
-
107
- buffer = " " * 4
108
- glGenBuffers(1, buffer)
109
- @positions_buffer_id = buffer.unpack1("L2")
110
-
111
- buffer = " " * 4
112
- glGenBuffers(1, buffer)
113
- @uvs_buffer_id = buffer.unpack1("L2")
114
-
115
- glBindVertexArray(@screen_vbo)
116
- glBindBuffer(GL_ARRAY_BUFFER, @positions_buffer_id)
117
- glBufferData(GL_ARRAY_BUFFER, @vertices.size * Fiddle::SIZEOF_FLOAT, @vertices.pack("f*"), GL_STATIC_DRAW)
118
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, nil)
119
-
120
- glBindBuffer(GL_ARRAY_BUFFER, @uvs_buffer_id)
121
- glBufferData(GL_ARRAY_BUFFER, @uvs.size * Fiddle::SIZEOF_FLOAT, @uvs.pack("f*"), GL_STATIC_DRAW)
122
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, nil)
123
-
124
- glEnableVertexAttribArray(0)
125
- glEnableVertexAttribArray(1)
126
-
127
- glBindVertexArray(0)
128
- end
129
-
130
- def bind_for_writing
131
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
132
- end
133
-
134
- def bind_for_reading
135
- glBindFramebuffer(GL_READ_FRAMEBUFFER, @framebuffer)
136
- end
137
-
138
- def set_read_buffer(buffer)
139
- glReadBuffer(GL_COLOR_ATTACHMENT0 + @textures.keys.index(buffer))
140
- end
141
-
142
- def set_read_buffer_depth
143
- glReadBuffer(GL_DEPTH_ATTACHMENT)
144
- end
145
-
146
- def unbind_framebuffer
147
- glBindFramebuffer(GL_FRAMEBUFFER, 0)
148
- end
149
-
150
- def texture(type)
151
- @textures[type]
152
- end
153
-
154
- def clean_up
155
- glDeleteFramebuffers(1, [@framebuffer].pack("L"))
156
-
157
- glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
158
-
159
- glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
160
- glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
161
- gl_error?
162
- end
163
- end
164
- end
1
+ module CyberarmEngine
2
+ class GBuffer
3
+ attr_reader :screen_vbo, :vertices, :uvs
4
+
5
+ def initialize(width:, height:)
6
+ @width = width
7
+ @height = height
8
+
9
+ @framebuffer = nil
10
+ @buffers = %i[position diffuse normal texcoord]
11
+ @textures = {}
12
+ @screen_vbo = nil
13
+ @ready = false
14
+
15
+ @vertices = [
16
+ -1.0, -1.0, 0,
17
+ 1.0, -1.0, 0,
18
+ -1.0, 1.0, 0,
19
+
20
+ -1.0, 1.0, 0,
21
+ 1.0, -1.0, 0,
22
+ 1.0, 1.0, 0
23
+ ].freeze
24
+
25
+ @uvs = [
26
+ 0, 0,
27
+ 1, 0,
28
+ 0, 1,
29
+
30
+ 0, 1,
31
+ 1, 0,
32
+ 1, 1
33
+ ].freeze
34
+
35
+ create_framebuffer
36
+ create_screen_vbo
37
+ end
38
+
39
+ def create_framebuffer
40
+ buffer = " " * 4
41
+ glGenFramebuffers(1, buffer)
42
+ @framebuffer = buffer.unpack1("L2")
43
+
44
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
45
+
46
+ create_textures
47
+
48
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER)
49
+
50
+ if status != GL_FRAMEBUFFER_COMPLETE
51
+ message = ""
52
+
53
+ message = case status
54
+ when GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
55
+ "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
56
+ when GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
57
+ "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
58
+ when GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
59
+ "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"
60
+ when GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
61
+ "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"
62
+ when GL_FRAMEBUFFER_UNSUPPORTED
63
+ "GL_FRAMEBUFFER_UNSUPPORTED"
64
+ else
65
+ "Unknown error!"
66
+ end
67
+ puts "Incomplete framebuffer: #{status}\nError: #{message}"
68
+ else
69
+ @ready = true
70
+ end
71
+
72
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)
73
+ end
74
+
75
+ def create_textures
76
+ @buffers.size.times do |i|
77
+ buffer = " " * 4
78
+ glGenTextures(1, buffer)
79
+ texture_id = buffer.unpack1("L2")
80
+ @textures[@buffers[i]] = texture_id
81
+
82
+ glBindTexture(GL_TEXTURE_2D, texture_id)
83
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, @width, @height, 0, GL_RGBA, GL_FLOAT, nil)
84
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
85
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
86
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, texture_id, 0)
87
+ end
88
+
89
+ buffer = " " * 4
90
+ glGenTextures(1, buffer)
91
+ texture_id = buffer.unpack1("L2")
92
+ @textures[:depth] = texture_id
93
+
94
+ glBindTexture(GL_TEXTURE_2D, texture_id)
95
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, @width, @height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, nil)
96
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture_id, 0)
97
+
98
+ draw_buffers = [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3]
99
+ glDrawBuffers(draw_buffers.size, draw_buffers.pack("I*"))
100
+ end
101
+
102
+ def create_screen_vbo
103
+ buffer = " " * 4
104
+ glGenVertexArrays(1, buffer)
105
+ @screen_vbo = buffer.unpack1("L2")
106
+
107
+ buffer = " " * 4
108
+ glGenBuffers(1, buffer)
109
+ @positions_buffer_id = buffer.unpack1("L2")
110
+
111
+ buffer = " " * 4
112
+ glGenBuffers(1, buffer)
113
+ @uvs_buffer_id = buffer.unpack1("L2")
114
+
115
+ glBindVertexArray(@screen_vbo)
116
+ glBindBuffer(GL_ARRAY_BUFFER, @positions_buffer_id)
117
+ glBufferData(GL_ARRAY_BUFFER, @vertices.size * Fiddle::SIZEOF_FLOAT, @vertices.pack("f*"), GL_STATIC_DRAW)
118
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, nil)
119
+
120
+ glBindBuffer(GL_ARRAY_BUFFER, @uvs_buffer_id)
121
+ glBufferData(GL_ARRAY_BUFFER, @uvs.size * Fiddle::SIZEOF_FLOAT, @uvs.pack("f*"), GL_STATIC_DRAW)
122
+ glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, nil)
123
+
124
+ glEnableVertexAttribArray(0)
125
+ glEnableVertexAttribArray(1)
126
+
127
+ glBindVertexArray(0)
128
+ end
129
+
130
+ def bind_for_writing
131
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
132
+ end
133
+
134
+ def bind_for_reading
135
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, @framebuffer)
136
+ end
137
+
138
+ def set_read_buffer(buffer)
139
+ glReadBuffer(GL_COLOR_ATTACHMENT0 + @textures.keys.index(buffer))
140
+ end
141
+
142
+ def set_read_buffer_depth
143
+ glReadBuffer(GL_DEPTH_ATTACHMENT)
144
+ end
145
+
146
+ def unbind_framebuffer
147
+ glBindFramebuffer(GL_FRAMEBUFFER, 0)
148
+ end
149
+
150
+ def texture(type)
151
+ @textures[type]
152
+ end
153
+
154
+ def clean_up
155
+ glDeleteFramebuffers(1, [@framebuffer].pack("L"))
156
+
157
+ glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
158
+
159
+ glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
160
+ glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
161
+ gl_error?
162
+ end
163
+ end
164
+ end