ruby_rpg 0.0.4 → 0.0.5

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 (237) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -21
  3. data/bin/build.bash +13 -13
  4. data/bin/import +44 -44
  5. data/glfw-3.3.9.bin.MACOS/LICENSE.md +23 -23
  6. data/glfw-3.3.9.bin.MACOS/README.md +5 -5
  7. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +81 -81
  8. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +199 -199
  9. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +81 -81
  10. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +153 -153
  11. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +81 -81
  12. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +223 -223
  13. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +81 -81
  14. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +259 -259
  15. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +88 -88
  16. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +85 -85
  17. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +93 -93
  18. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +95 -95
  19. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +91 -91
  20. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +12 -12
  21. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +12 -12
  22. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +1685 -1685
  23. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +28 -28
  24. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +192 -192
  25. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +1 -1
  26. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +91 -91
  27. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +11 -11
  28. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +11 -11
  29. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +17 -17
  30. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +12 -12
  31. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +1661 -1661
  32. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +1175 -1175
  33. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +167 -167
  34. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +303 -303
  35. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +282 -282
  36. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +304 -304
  37. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +304 -304
  38. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +202 -202
  39. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +410 -410
  40. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +234 -234
  41. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +570 -570
  42. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +2255 -2255
  43. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +362 -362
  44. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +2034 -2034
  45. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +198 -198
  46. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +848 -848
  47. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +812 -812
  48. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +198 -198
  49. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +359 -359
  50. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +3434 -3434
  51. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +100 -100
  52. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +81 -81
  53. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +570 -570
  54. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +81 -81
  55. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +132 -132
  56. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +81 -81
  57. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +351 -351
  58. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +33 -33
  59. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +81 -81
  60. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +136 -136
  61. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +29 -29
  62. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +8 -8
  63. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +8 -8
  64. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +81 -81
  65. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +229 -229
  66. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +81 -81
  67. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +374 -374
  68. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +634 -634
  69. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +81 -81
  70. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +99 -99
  71. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +9 -9
  72. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +9 -9
  73. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +81 -81
  74. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +397 -397
  75. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +5 -5
  76. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +4 -4
  77. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +65 -65
  78. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +26 -26
  79. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +44 -44
  80. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +34 -34
  81. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +12 -12
  82. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +52 -52
  83. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +69 -69
  84. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +51 -51
  85. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +14 -14
  86. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +36 -36
  87. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +98 -98
  88. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +12 -12
  89. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +6 -6
  90. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +9 -9
  91. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +57 -57
  92. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +22 -22
  93. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +103 -103
  94. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +23 -23
  95. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +35 -35
  96. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +63 -63
  97. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +505 -505
  98. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +24 -24
  99. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +50 -50
  100. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +17 -17
  101. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +12 -12
  102. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +35 -35
  103. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +7 -7
  104. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +18 -18
  105. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +34 -34
  106. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +4 -4
  107. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +6 -6
  108. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +5 -5
  109. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +6 -6
  110. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +6 -6
  111. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +4 -4
  112. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +4 -4
  113. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +4 -4
  114. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +4 -4
  115. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +146 -146
  116. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +6 -6
  117. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +4 -4
  118. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +4 -4
  119. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +6 -6
  120. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +5 -5
  121. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +4 -4
  122. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +5 -5
  123. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +4 -4
  124. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +5 -5
  125. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +5 -5
  126. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +6 -6
  127. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +6 -6
  128. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +4 -4
  129. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +4 -4
  130. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +7 -7
  131. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +4 -4
  132. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +5 -5
  133. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +24 -24
  134. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +24 -24
  135. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +31 -31
  136. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +31 -31
  137. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +4 -4
  138. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +4 -4
  139. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +4 -4
  140. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +5 -5
  141. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +4 -4
  142. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +6 -6
  143. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +4 -4
  144. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +4 -4
  145. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +7 -7
  146. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +6 -6
  147. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +4 -4
  148. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +5 -5
  149. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +5 -5
  150. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +4 -4
  151. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +6 -6
  152. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +6 -6
  153. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +4 -4
  154. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +291 -291
  155. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +840 -840
  156. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +39 -39
  157. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +32 -32
  158. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +4 -4
  159. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +6 -6
  160. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +5 -5
  161. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +4 -4
  162. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +4 -4
  163. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +6 -6
  164. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +4 -4
  165. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +4 -4
  166. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +877 -877
  167. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +134 -134
  168. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +170 -170
  169. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +151 -151
  170. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +204 -204
  171. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +81 -81
  172. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +196 -196
  173. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +81 -81
  174. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +763 -763
  175. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +5932 -5932
  176. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +634 -634
  177. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw.3.dylib +0 -0
  178. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  179. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  180. data/lib/engine/autoloader.rb +11 -11
  181. data/lib/engine/camera.rb +12 -12
  182. data/lib/engine/component.rb +63 -63
  183. data/lib/engine/components/audio_source.rb +41 -41
  184. data/lib/engine/components/direction_light.rb +22 -22
  185. data/lib/engine/components/font_renderer.rb +134 -134
  186. data/lib/engine/components/mesh_renderer.rb +31 -31
  187. data/lib/engine/components/orthographic_camera.rb +54 -54
  188. data/lib/engine/components/perspective_camera.rb +53 -53
  189. data/lib/engine/components/point_light.rb +23 -23
  190. data/lib/engine/components/sprite_renderer.rb +141 -141
  191. data/lib/engine/components/ui_font_renderer.rb +140 -140
  192. data/lib/engine/components/ui_sprite_clickbox.rb +62 -0
  193. data/lib/engine/components/ui_sprite_renderer.rb +101 -101
  194. data/lib/engine/compute_shader.rb +93 -0
  195. data/lib/engine/cursor.rb +43 -43
  196. data/lib/engine/debugging.rb +41 -41
  197. data/lib/engine/engine.rb +131 -131
  198. data/lib/engine/font.rb +74 -74
  199. data/lib/engine/game_object.rb +234 -234
  200. data/lib/engine/importers/font_importer.rb +69 -69
  201. data/lib/engine/importers/obj_file.rb +244 -244
  202. data/lib/engine/importers/obj_importer.rb +33 -33
  203. data/lib/engine/input.rb +105 -104
  204. data/lib/engine/material.rb +79 -79
  205. data/lib/engine/mesh.rb +43 -43
  206. data/lib/engine/path.rb +92 -92
  207. data/lib/engine/physics/collision.rb +12 -12
  208. data/lib/engine/physics/components/cube_collider.rb +6 -6
  209. data/lib/engine/physics/components/rigidbody.rb +103 -103
  210. data/lib/engine/physics/components/sphere_collider.rb +93 -93
  211. data/lib/engine/physics/physics_resolver.rb +37 -37
  212. data/lib/engine/polygon_mesh.rb +45 -45
  213. data/lib/engine/quaternion.rb +234 -234
  214. data/lib/engine/rendering/instance_renderer.rb +153 -153
  215. data/lib/engine/rendering/render_pipeline.rb +35 -35
  216. data/lib/engine/screenshoter.rb +34 -34
  217. data/lib/engine/shader.rb +119 -91
  218. data/lib/engine/shaders/colour_frag.glsl +8 -8
  219. data/lib/engine/shaders/colour_vertex.glsl +13 -13
  220. data/lib/engine/shaders/mesh_frag.glsl +102 -102
  221. data/lib/engine/shaders/mesh_vertex.glsl +25 -25
  222. data/lib/engine/shaders/skybox_frag.glsl +12 -12
  223. data/lib/engine/shaders/skybox_vert.glsl +14 -14
  224. data/lib/engine/shaders/sprite_frag.glsl +17 -17
  225. data/lib/engine/shaders/sprite_vertex.glsl +15 -15
  226. data/lib/engine/shaders/text_frag.glsl +15 -15
  227. data/lib/engine/shaders/text_vertex.glsl +31 -31
  228. data/lib/engine/shaders/ui_sprite_frag.glsl +15 -15
  229. data/lib/engine/shaders/ui_sprite_vertex.glsl +15 -15
  230. data/lib/engine/shaders/vertex_lit_frag.glsl +89 -89
  231. data/lib/engine/shaders/vertex_lit_vertex.glsl +28 -28
  232. data/lib/engine/tangent_calculator.rb +42 -42
  233. data/lib/engine/texture.rb +53 -53
  234. data/lib/engine/video_mode.rb +37 -37
  235. data/lib/engine/window.rb +126 -126
  236. data/lib/ruby_rpg.rb +58 -56
  237. metadata +5 -6
data/lib/engine/window.rb CHANGED
@@ -1,126 +1,126 @@
1
- # frozen_string_literal: true
2
-
3
- module Engine
4
- class Window
5
-
6
- DEFAULT_TITLE = File.basename($PROGRAM_NAME).gsub(/\.rb$/,'')
7
-
8
- class << self
9
- attr_accessor :full_screen, :window, :window_title
10
- attr_reader :framebuffer_height, :framebuffer_width
11
-
12
- def create_window
13
- set_opengl_version
14
- decorations :disable
15
- auto_iconify :disable
16
- @full_screen = true
17
- initial_video_mode = VideoMode.current_video_mode
18
- @window = GLFW.CreateWindow(
19
- initial_video_mode.width, initial_video_mode.height, DEFAULT_TITLE, primary_monitor, nil
20
- )
21
- end
22
-
23
- alias full_screen? full_screen
24
-
25
- def width
26
- max_width = VideoMode.current_video_mode.width
27
- @width = full_screen? ? max_width : max_width * 0.8
28
- end
29
-
30
- def height
31
- max_height = VideoMode.current_video_mode.height
32
- @height = full_screen? ? max_height : max_height * 0.8
33
- end
34
-
35
- def monitor
36
- full_screen? ? primary_monitor : nil
37
- end
38
-
39
- def set_title(title)
40
- GLFW::SetWindowTitle(window, title)
41
- end
42
-
43
- def primary_monitor
44
- # The primary monitor is returned by glfwGetPrimaryMonitor.
45
- # It is the user's preferred monitor and is usually the one with global UI elements like task bar or menu bar.
46
- # https://www.glfw.org/docs/latest/monitor_guide.html#monitor_monitors
47
- GLFW.GetPrimaryMonitor
48
- end
49
-
50
- def refresh_rate
51
- # GLFW_REFRESH_RATE specifies the desired refresh rate for full screen windows.
52
- # A value of GLFW_DONT_CARE means the highest available refresh rate will be used.
53
- # This hint is ignored for windowed mode windows.
54
- # https://www.glfw.org/docs/latest/window_guide.html#GLFW_REFRESH_RATE
55
- GLFW::DONT_CARE
56
- end
57
-
58
- def decorations(state)
59
- # GLFW_DECORATED specifies whether the windowed mode window will have window decorations such as a border,
60
- # a close widget, etc.
61
- # An undecorated window will not be resizable by the user but will still allow the user to generate close events
62
- # on some platforms.
63
- # Possible values are GLFW_TRUE and GLFW_FALSE.
64
- # This hint is ignored for full screen windows.
65
- # https://www.glfw.org/docs/latest/window_guide.html#GLFW_DECORATED_attrib
66
- glfw_setting = translate_state[state]
67
-
68
- GLFW.WindowHint(GLFW::DECORATED, glfw_setting)
69
- GLFW.SetWindowAttrib(window, GLFW::DECORATED, glfw_setting) if window
70
- end
71
-
72
- def auto_iconify(state)
73
- # GLFW_AUTO_ICONIFY specifies whether the full screen window will automatically iconify and restore the previous
74
- # video mode on input focus loss.
75
- # Possible values are GLFW_TRUE and GLFW_FALSE.
76
- # This hint is ignored for windowed mode windows.
77
- # https://www.glfw.org/docs/latest/window_guide.html#GLFW_AUTO_ICONIFY_hint
78
- glfw_setting = translate_state[state]
79
-
80
- GLFW.WindowHint(GLFW::AUTO_ICONIFY, glfw_setting)
81
- GLFW.SetWindowAttrib(window, GLFW::AUTO_ICONIFY, glfw_setting) if window
82
- end
83
-
84
- def set_to_windowed
85
- @full_screen = false
86
- GLFW.SetWindowMonitor(window, nil, 0, 0, width, height, refresh_rate)
87
- end
88
-
89
- def set_to_full_screen
90
- @full_screen = true
91
- GLFW.SetWindowMonitor(window, primary_monitor, 0, 0, width, height, refresh_rate)
92
- end
93
-
94
- def toggle_full_screen
95
- full_screen? ? set_to_windowed : set_to_full_screen
96
- end
97
-
98
- def focus_window
99
- GLFW.FocusWindow(window)
100
- end
101
-
102
- def get_framebuffer_size
103
- width_buf = ' ' * 8
104
- height_buf = ' ' * 8
105
-
106
- GLFW.GetFramebufferSize(window, width_buf, height_buf)
107
- @framebuffer_width = width_buf.unpack1('L')
108
- @framebuffer_height = height_buf.unpack1('L')
109
- end
110
-
111
- def set_opengl_version
112
- GLFW.WindowHint(GLFW::CONTEXT_VERSION_MAJOR, 3)
113
- GLFW.WindowHint(GLFW::CONTEXT_VERSION_MINOR, 3)
114
- GLFW.WindowHint(GLFW::OPENGL_PROFILE, GLFW::OPENGL_CORE_PROFILE)
115
- GLFW.WindowHint(GLFW::OPENGL_FORWARD_COMPAT, GLFW::TRUE)
116
- end
117
-
118
- def translate_state
119
- {
120
- :enable => GLFW::TRUE,
121
- :disable => GLFW::FALSE
122
- }
123
- end
124
- end
125
- end
126
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ class Window
5
+
6
+ DEFAULT_TITLE = File.basename($PROGRAM_NAME).gsub(/\.rb$/,'')
7
+
8
+ class << self
9
+ attr_accessor :full_screen, :window, :window_title
10
+ attr_reader :framebuffer_height, :framebuffer_width
11
+
12
+ def create_window
13
+ set_opengl_version
14
+ decorations :disable
15
+ auto_iconify :disable
16
+ @full_screen = true
17
+ initial_video_mode = VideoMode.current_video_mode
18
+ @window = GLFW.CreateWindow(
19
+ initial_video_mode.width, initial_video_mode.height, DEFAULT_TITLE, primary_monitor, nil
20
+ )
21
+ end
22
+
23
+ alias full_screen? full_screen
24
+
25
+ def width
26
+ max_width = VideoMode.current_video_mode.width
27
+ @width = full_screen? ? max_width : max_width * 0.8
28
+ end
29
+
30
+ def height
31
+ max_height = VideoMode.current_video_mode.height
32
+ @height = full_screen? ? max_height : max_height * 0.8
33
+ end
34
+
35
+ def monitor
36
+ full_screen? ? primary_monitor : nil
37
+ end
38
+
39
+ def set_title(title)
40
+ GLFW::SetWindowTitle(window, title)
41
+ end
42
+
43
+ def primary_monitor
44
+ # The primary monitor is returned by glfwGetPrimaryMonitor.
45
+ # It is the user's preferred monitor and is usually the one with global UI elements like task bar or menu bar.
46
+ # https://www.glfw.org/docs/latest/monitor_guide.html#monitor_monitors
47
+ GLFW.GetPrimaryMonitor
48
+ end
49
+
50
+ def refresh_rate
51
+ # GLFW_REFRESH_RATE specifies the desired refresh rate for full screen windows.
52
+ # A value of GLFW_DONT_CARE means the highest available refresh rate will be used.
53
+ # This hint is ignored for windowed mode windows.
54
+ # https://www.glfw.org/docs/latest/window_guide.html#GLFW_REFRESH_RATE
55
+ GLFW::DONT_CARE
56
+ end
57
+
58
+ def decorations(state)
59
+ # GLFW_DECORATED specifies whether the windowed mode window will have window decorations such as a border,
60
+ # a close widget, etc.
61
+ # An undecorated window will not be resizable by the user but will still allow the user to generate close events
62
+ # on some platforms.
63
+ # Possible values are GLFW_TRUE and GLFW_FALSE.
64
+ # This hint is ignored for full screen windows.
65
+ # https://www.glfw.org/docs/latest/window_guide.html#GLFW_DECORATED_attrib
66
+ glfw_setting = translate_state[state]
67
+
68
+ GLFW.WindowHint(GLFW::DECORATED, glfw_setting)
69
+ GLFW.SetWindowAttrib(window, GLFW::DECORATED, glfw_setting) if window
70
+ end
71
+
72
+ def auto_iconify(state)
73
+ # GLFW_AUTO_ICONIFY specifies whether the full screen window will automatically iconify and restore the previous
74
+ # video mode on input focus loss.
75
+ # Possible values are GLFW_TRUE and GLFW_FALSE.
76
+ # This hint is ignored for windowed mode windows.
77
+ # https://www.glfw.org/docs/latest/window_guide.html#GLFW_AUTO_ICONIFY_hint
78
+ glfw_setting = translate_state[state]
79
+
80
+ GLFW.WindowHint(GLFW::AUTO_ICONIFY, glfw_setting)
81
+ GLFW.SetWindowAttrib(window, GLFW::AUTO_ICONIFY, glfw_setting) if window
82
+ end
83
+
84
+ def set_to_windowed
85
+ @full_screen = false
86
+ GLFW.SetWindowMonitor(window, nil, 0, 0, width, height, refresh_rate)
87
+ end
88
+
89
+ def set_to_full_screen
90
+ @full_screen = true
91
+ GLFW.SetWindowMonitor(window, primary_monitor, 0, 0, width, height, refresh_rate)
92
+ end
93
+
94
+ def toggle_full_screen
95
+ full_screen? ? set_to_windowed : set_to_full_screen
96
+ end
97
+
98
+ def focus_window
99
+ GLFW.FocusWindow(window)
100
+ end
101
+
102
+ def get_framebuffer_size
103
+ width_buf = ' ' * 8
104
+ height_buf = ' ' * 8
105
+
106
+ GLFW.GetFramebufferSize(window, width_buf, height_buf)
107
+ @framebuffer_width = width_buf.unpack1('L')
108
+ @framebuffer_height = height_buf.unpack1('L')
109
+ end
110
+
111
+ def set_opengl_version
112
+ GLFW.WindowHint(GLFW::CONTEXT_VERSION_MAJOR, 4)
113
+ GLFW.WindowHint(GLFW::CONTEXT_VERSION_MINOR, 3)
114
+ GLFW.WindowHint(GLFW::OPENGL_PROFILE, GLFW::OPENGL_CORE_PROFILE)
115
+ GLFW.WindowHint(GLFW::OPENGL_FORWARD_COMPAT, GLFW::TRUE)
116
+ end
117
+
118
+ def translate_state
119
+ {
120
+ :enable => GLFW::TRUE,
121
+ :disable => GLFW::FALSE
122
+ }
123
+ end
124
+ end
125
+ end
126
+ end
data/lib/ruby_rpg.rb CHANGED
@@ -1,56 +1,58 @@
1
- # frozen_string_literal: true
2
-
3
- require 'opengl'
4
- require 'glfw'
5
- require 'concurrent'
6
- require 'os'
7
- require 'native_audio'
8
-
9
- require_relative 'engine/autoloader'
10
- require_relative "engine/debugging"
11
- require_relative 'engine/rendering/render_pipeline'
12
- require_relative 'engine/rendering/instance_renderer'
13
- require_relative 'engine/screenshoter'
14
- require_relative 'engine/input'
15
- require_relative "engine/quaternion"
16
- require_relative 'engine/game_object'
17
- require_relative 'engine/texture'
18
- require_relative 'engine/material'
19
- require_relative 'engine/mesh'
20
- require_relative "engine/font"
21
- require_relative 'engine/path'
22
- require_relative 'engine/polygon_mesh'
23
- require_relative 'engine/importers/obj_file'
24
- require_relative 'engine/tangent_calculator'
25
- require_relative 'engine/shader'
26
- require_relative 'engine/component'
27
- require_relative "engine/camera"
28
- require_relative "engine/window"
29
- require_relative "engine/video_mode"
30
- require_relative "engine/cursor"
31
-
32
- require_relative "engine/components/orthographic_camera"
33
- require_relative "engine/components/perspective_camera"
34
- require_relative "engine/components/sprite_renderer"
35
- require_relative "engine/components/ui_sprite_renderer"
36
- require_relative "engine/components/mesh_renderer"
37
- require_relative "engine/components/font_renderer"
38
- require_relative "engine/components/ui_font_renderer"
39
- require_relative "engine/components/point_light"
40
- require_relative "engine/components/direction_light"
41
- require_relative "engine/components/audio_source"
42
-
43
- require_relative "engine/physics/physics_resolver"
44
- require_relative 'engine/physics/collision'
45
- require_relative "engine/physics/components/sphere_collider"
46
- require_relative "engine/physics/components/cube_collider"
47
- require_relative "engine/physics/components/rigidbody"
48
-
49
- if OS.windows?
50
- GLFW.load_lib(File.expand_path(File.join(__dir__, "..", "glfw-3.4.bin.WIN64", "lib-static-ucrt", "glfw3.dll")))
51
- elsif OS.mac?
52
- GLFW.load_lib(File.expand_path(File.join(__dir__, "..", "glfw-3.3.9.bin.MACOS", "lib-arm64", "libglfw.3.dylib")))
53
- end
54
- GLFW.Init
55
-
56
- require_relative 'engine/engine'
1
+ # frozen_string_literal: true
2
+
3
+ require 'opengl'
4
+ require 'glfw'
5
+ require 'concurrent'
6
+ require 'os'
7
+ require 'native_audio'
8
+
9
+ require_relative 'engine/autoloader'
10
+ require_relative "engine/debugging"
11
+ require_relative 'engine/rendering/render_pipeline'
12
+ require_relative 'engine/rendering/instance_renderer'
13
+ require_relative 'engine/screenshoter'
14
+ require_relative 'engine/input'
15
+ require_relative "engine/quaternion"
16
+ require_relative 'engine/game_object'
17
+ require_relative 'engine/texture'
18
+ require_relative 'engine/material'
19
+ require_relative 'engine/mesh'
20
+ require_relative "engine/font"
21
+ require_relative 'engine/path'
22
+ require_relative 'engine/polygon_mesh'
23
+ require_relative 'engine/importers/obj_file'
24
+ require_relative 'engine/tangent_calculator'
25
+ require_relative 'engine/shader'
26
+ require_relative 'engine/compute_shader'
27
+ require_relative 'engine/component'
28
+ require_relative "engine/camera"
29
+ require_relative "engine/window"
30
+ require_relative "engine/video_mode"
31
+ require_relative "engine/cursor"
32
+
33
+ require_relative "engine/components/orthographic_camera"
34
+ require_relative "engine/components/perspective_camera"
35
+ require_relative "engine/components/sprite_renderer"
36
+ require_relative "engine/components/ui_sprite_renderer"
37
+ require_relative "engine/components/ui_sprite_clickbox"
38
+ require_relative "engine/components/mesh_renderer"
39
+ require_relative "engine/components/font_renderer"
40
+ require_relative "engine/components/ui_font_renderer"
41
+ require_relative "engine/components/point_light"
42
+ require_relative "engine/components/direction_light"
43
+ require_relative "engine/components/audio_source"
44
+
45
+ require_relative "engine/physics/physics_resolver"
46
+ require_relative 'engine/physics/collision'
47
+ require_relative "engine/physics/components/sphere_collider"
48
+ require_relative "engine/physics/components/cube_collider"
49
+ require_relative "engine/physics/components/rigidbody"
50
+
51
+ if OS.windows?
52
+ GLFW.load_lib(File.expand_path(File.join(__dir__, "..", "glfw-3.4.bin.WIN64", "lib-static-ucrt", "glfw3.dll")))
53
+ elsif OS.mac?
54
+ GLFW.load_lib(File.expand_path(File.join(__dir__, "..", "glfw-3.3.9.bin.MACOS", "lib-arm64", "libglfw.3.dylib")))
55
+ end
56
+ GLFW.Init
57
+
58
+ require_relative 'engine/engine'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rpg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Hatfull
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: native_audio
@@ -564,7 +563,9 @@ files:
564
563
  - lib/engine/components/point_light.rb
565
564
  - lib/engine/components/sprite_renderer.rb
566
565
  - lib/engine/components/ui_font_renderer.rb
566
+ - lib/engine/components/ui_sprite_clickbox.rb
567
567
  - lib/engine/components/ui_sprite_renderer.rb
568
+ - lib/engine/compute_shader.rb
568
569
  - lib/engine/cursor.rb
569
570
  - lib/engine/debugging.rb
570
571
  - lib/engine/engine.rb
@@ -611,7 +612,6 @@ homepage: https://github.com/rubyrpg/ruby_rpg
611
612
  licenses:
612
613
  - MIT
613
614
  metadata: {}
614
- post_install_message:
615
615
  rdoc_options: []
616
616
  require_paths:
617
617
  - lib
@@ -626,8 +626,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
626
626
  - !ruby/object:Gem::Version
627
627
  version: '0'
628
628
  requirements: []
629
- rubygems_version: 3.5.9
630
- signing_key:
629
+ rubygems_version: 3.6.7
631
630
  specification_version: 4
632
631
  summary: A game engine written in Ruby
633
632
  test_files: []