ruby_rpg 0.0.5 → 0.1.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 (584) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +43 -21
  3. data/bin/build.bash +13 -13
  4. data/bin/import +54 -44
  5. data/ext/gl_native/extconf.rb +20 -0
  6. data/ext/gl_native/gl_native.c +563 -0
  7. data/ext/glfw_native/extconf.rb +18 -0
  8. data/ext/glfw_native/glfw_native.c +451 -0
  9. data/lib/engine/assets/_imported/cube.index_data +36 -0
  10. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  11. data/lib/engine/assets/_imported/plane.index_data +6 -0
  12. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  13. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  14. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  15. data/lib/engine/assets/cube.obj +46 -0
  16. data/lib/engine/assets/plane.obj +16 -0
  17. data/lib/engine/assets/sphere.obj +2488 -0
  18. data/lib/engine/autoloader.rb +11 -11
  19. data/lib/engine/camera.rb +12 -12
  20. data/lib/engine/component.rb +65 -63
  21. data/lib/engine/components/audio_source.rb +43 -41
  22. data/lib/engine/components/direction_light.rb +102 -23
  23. data/lib/engine/components/orthographic_camera.rb +60 -54
  24. data/lib/engine/components/perspective_camera.rb +76 -53
  25. data/lib/engine/components/point_light.rb +80 -24
  26. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  27. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  28. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  29. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  30. data/lib/engine/components/spot_light.rb +90 -0
  31. data/lib/engine/components/sprite_animator.rb +42 -0
  32. data/lib/engine/components/ui/flex/layout.rb +94 -0
  33. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  34. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  35. data/lib/engine/components/ui/flex.rb +60 -0
  36. data/lib/engine/components/ui/font_renderer.rb +57 -0
  37. data/lib/engine/components/ui/rect.rb +117 -0
  38. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  39. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  40. data/lib/engine/compute_shader.rb +14 -93
  41. data/lib/engine/compute_texture.rb +13 -0
  42. data/lib/engine/cursor.rb +43 -43
  43. data/lib/engine/debugging.rb +41 -41
  44. data/lib/engine/engine.rb +127 -131
  45. data/lib/engine/font.rb +99 -74
  46. data/lib/engine/game_object.rb +306 -234
  47. data/lib/engine/gl.rb +439 -0
  48. data/lib/engine/glfw.rb +151 -0
  49. data/lib/engine/importers/font_importer.rb +69 -69
  50. data/lib/engine/importers/obj_file.rb +244 -244
  51. data/lib/engine/importers/obj_importer.rb +33 -33
  52. data/lib/engine/input.rb +212 -105
  53. data/lib/engine/material.rb +214 -79
  54. data/lib/engine/matrix_helpers.rb +38 -0
  55. data/lib/engine/mesh.rb +68 -43
  56. data/lib/engine/metal/compute_shader.rb +118 -0
  57. data/lib/engine/metal/compute_texture.rb +176 -0
  58. data/lib/engine/metal/device.rb +98 -0
  59. data/lib/engine/metal/metal_bindings.rb +126 -0
  60. data/lib/engine/opengl/compute_shader.rb +77 -0
  61. data/lib/engine/opengl/compute_texture.rb +31 -0
  62. data/lib/engine/path.rb +92 -92
  63. data/lib/engine/physics/collision.rb +12 -12
  64. data/lib/engine/physics/components/cube_collider.rb +6 -6
  65. data/lib/engine/physics/components/rigidbody.rb +106 -103
  66. data/lib/engine/physics/components/sphere_collider.rb +103 -93
  67. data/lib/engine/physics/physics_resolver.rb +49 -37
  68. data/lib/engine/polygon_mesh.rb +45 -45
  69. data/lib/engine/quaternion.rb +234 -234
  70. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  71. data/lib/engine/rendering/gpu_timer.rb +68 -0
  72. data/lib/engine/rendering/instance_renderer.rb +232 -153
  73. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  74. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  75. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  76. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  77. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  78. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  79. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  80. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  81. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  82. data/lib/engine/rendering/render_pipeline.rb +267 -35
  83. data/lib/engine/rendering/render_texture.rb +118 -0
  84. data/lib/engine/rendering/screen_quad.rb +64 -0
  85. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  86. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  87. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  88. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  89. data/lib/engine/screenshoter.rb +34 -34
  90. data/lib/engine/serialization/graph_serializer.rb +74 -0
  91. data/lib/engine/serialization/object_serializer.rb +98 -0
  92. data/lib/engine/serialization/serializable.rb +78 -0
  93. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  94. data/lib/engine/shader.rb +215 -119
  95. data/lib/engine/shaders/colour_frag.glsl +16 -8
  96. data/lib/engine/shaders/colour_vertex.glsl +20 -13
  97. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  98. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  99. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  100. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +15 -14
  101. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  102. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  103. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  104. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  105. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  106. data/lib/engine/shaders/mesh_frag.glsl +53 -102
  107. data/lib/engine/shaders/mesh_vertex.glsl +25 -25
  108. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  109. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  110. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  111. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  112. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  113. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  114. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  115. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  116. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  117. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  118. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  119. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  120. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  121. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  122. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  123. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  124. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  125. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  126. data/lib/engine/shaders/sprite_frag.glsl +17 -17
  127. data/lib/engine/shaders/sprite_vertex.glsl +15 -15
  128. data/lib/engine/shaders/text_frag.glsl +15 -15
  129. data/lib/engine/shaders/text_vertex.glsl +31 -31
  130. data/lib/engine/shaders/ui_sprite_frag.glsl +15 -15
  131. data/lib/engine/shaders/ui_sprite_vertex.glsl +15 -15
  132. data/lib/engine/shaders/vertex_lit_frag.glsl +33 -89
  133. data/lib/engine/shaders/vertex_lit_vertex.glsl +28 -28
  134. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  135. data/lib/engine/standard_objects/cube.rb +23 -0
  136. data/lib/engine/standard_objects/default_material.rb +20 -0
  137. data/lib/engine/standard_objects/plane.rb +23 -0
  138. data/lib/engine/standard_objects/sphere.rb +23 -0
  139. data/lib/engine/tangent_calculator.rb +42 -42
  140. data/lib/engine/texture.rb +62 -53
  141. data/lib/engine/ui/rect.rb +16 -0
  142. data/lib/engine/video_mode.rb +37 -37
  143. data/lib/engine/window.rb +126 -126
  144. data/lib/ruby_rpg.rb +116 -58
  145. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  146. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  147. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  148. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  149. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  150. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +23 -23
  151. metadata +122 -463
  152. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  153. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  154. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  155. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  156. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  157. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  158. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  159. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  160. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  161. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  162. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  163. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  164. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  165. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  166. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  167. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  168. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  169. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  170. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  171. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  172. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  173. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  174. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  175. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  176. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  177. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  178. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  179. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  180. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  181. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  182. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  183. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  184. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  185. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  186. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  187. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  188. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  189. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  190. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  191. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  192. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  193. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  194. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  195. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  196. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  197. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  198. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  199. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  200. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  201. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  202. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  203. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  204. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  205. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  206. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  207. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  208. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  209. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  210. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  211. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  212. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  213. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  214. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  215. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  216. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  217. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  218. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  219. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  220. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  221. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  222. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  223. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  224. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  225. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  226. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  227. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  228. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  229. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  230. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  231. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  232. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  233. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  234. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  235. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  236. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  237. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  238. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  239. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  240. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  241. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  242. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  243. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  244. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  245. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  246. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  247. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  248. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  249. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  250. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  251. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  300. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  301. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  302. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  303. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  304. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  305. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  306. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  307. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  308. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  309. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  310. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  311. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  312. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  313. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  314. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  315. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  316. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  317. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  318. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  319. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  320. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  321. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  322. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  323. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  324. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  325. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  326. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  327. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  328. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  329. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  330. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  331. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  332. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  333. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  334. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  335. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  336. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  337. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  338. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  339. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  340. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  341. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  342. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  343. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  344. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  345. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  346. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  347. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  348. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  349. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  350. data/glfw-3.4.bin.WIN64/README.md +0 -70
  351. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  352. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  353. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  354. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  355. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  356. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  357. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  358. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  359. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  360. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  361. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  362. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  363. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  364. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  365. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  366. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  367. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  368. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  369. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  370. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  371. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  372. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  373. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  374. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  375. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  376. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  377. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  378. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  379. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  380. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  381. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  382. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  383. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  384. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  385. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  386. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  387. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  388. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  389. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  390. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  391. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  392. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  393. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  394. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  395. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  396. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  397. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  398. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  399. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  400. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  401. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  402. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  403. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  404. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  405. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  406. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  407. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  408. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  409. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  410. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  411. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  412. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  413. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  414. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  415. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  416. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  417. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  418. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  419. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  420. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  421. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  422. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  423. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  424. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  425. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  426. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  427. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  428. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  429. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  430. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  431. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  432. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  433. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  434. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  435. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  436. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  437. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  438. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  439. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  440. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  441. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  442. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  443. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  444. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  445. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  446. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  447. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  448. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  449. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  450. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  452. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  453. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  454. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  455. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  456. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  457. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  458. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  459. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  460. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  461. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  462. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  463. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  464. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  465. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  466. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  467. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  468. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  469. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  470. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  471. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  472. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  473. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  474. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  475. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  476. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  477. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  478. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  479. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  480. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  481. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  482. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  483. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  484. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  485. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  487. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  488. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  489. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  490. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  491. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  492. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  493. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  494. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  495. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  496. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  497. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  499. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  500. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  502. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  504. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  505. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  506. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  507. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  508. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  509. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  510. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  511. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  512. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  513. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  514. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  515. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  516. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  517. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  518. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  519. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  520. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  521. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  522. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  523. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  524. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  525. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  526. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  527. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  528. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  529. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  530. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  531. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  532. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  533. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  534. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  535. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  536. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  537. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  538. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  539. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  540. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  541. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  542. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  543. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  544. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  545. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  546. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  547. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  548. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  549. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  550. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  551. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  552. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  553. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  554. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  555. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  556. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  557. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  558. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  559. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  560. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  561. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  562. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  563. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  564. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  565. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  566. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  567. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  568. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  569. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  570. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  571. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  572. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  573. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  574. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  575. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  576. data/lib/engine/components/font_renderer.rb +0 -134
  577. data/lib/engine/components/mesh_renderer.rb +0 -31
  578. data/lib/engine/components/sprite_renderer.rb +0 -141
  579. data/lib/engine/components/ui_font_renderer.rb +0 -140
  580. data/lib/engine/components/ui_sprite_clickbox.rb +0 -62
  581. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  582. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  583. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  584. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
@@ -0,0 +1,451 @@
1
+ #include <ruby.h>
2
+ #include <stdint.h>
3
+
4
+ #ifdef __APPLE__
5
+ #include <dlfcn.h>
6
+ #elif defined(_WIN32)
7
+ #include <windows.h>
8
+ #else
9
+ #include <dlfcn.h>
10
+ #endif
11
+
12
+ /* GLFW type definitions */
13
+ typedef void* GLFWwindow;
14
+ typedef void* GLFWmonitor;
15
+
16
+ typedef struct {
17
+ int width;
18
+ int height;
19
+ int redBits;
20
+ int greenBits;
21
+ int blueBits;
22
+ int refreshRate;
23
+ } GLFWvidmode;
24
+
25
+ /* Callback type definitions */
26
+ typedef void (*GLFWkeyfun)(GLFWwindow*, int, int, int, int);
27
+ typedef void (*GLFWcursorposfun)(GLFWwindow*, double, double);
28
+ typedef void (*GLFWmousebuttonfun)(GLFWwindow*, int, int, int);
29
+
30
+ /* Function pointer types */
31
+ typedef int (*PFN_glfwInit)(void);
32
+ typedef void (*PFN_glfwTerminate)(void);
33
+ typedef GLFWwindow* (*PFN_glfwCreateWindow)(int, int, const char*, GLFWmonitor*, GLFWwindow*);
34
+ typedef void (*PFN_glfwDestroyWindow)(GLFWwindow*);
35
+ typedef void (*PFN_glfwWindowHint)(int, int);
36
+ typedef void (*PFN_glfwSetWindowAttrib)(GLFWwindow*, int, int);
37
+ typedef void (*PFN_glfwSetWindowTitle)(GLFWwindow*, const char*);
38
+ typedef void (*PFN_glfwSetWindowMonitor)(GLFWwindow*, GLFWmonitor*, int, int, int, int, int);
39
+ typedef int (*PFN_glfwWindowShouldClose)(GLFWwindow*);
40
+ typedef void (*PFN_glfwSetWindowShouldClose)(GLFWwindow*, int);
41
+ typedef void (*PFN_glfwFocusWindow)(GLFWwindow*);
42
+ typedef void (*PFN_glfwMakeContextCurrent)(GLFWwindow*);
43
+ typedef void (*PFN_glfwGetFramebufferSize)(GLFWwindow*, int*, int*);
44
+ typedef void (*PFN_glfwPollEvents)(void);
45
+ typedef void (*PFN_glfwSwapBuffers)(GLFWwindow*);
46
+ typedef void (*PFN_glfwSwapInterval)(int);
47
+ typedef GLFWkeyfun (*PFN_glfwSetKeyCallback)(GLFWwindow*, GLFWkeyfun);
48
+ typedef GLFWcursorposfun (*PFN_glfwSetCursorPosCallback)(GLFWwindow*, GLFWcursorposfun);
49
+ typedef GLFWmousebuttonfun (*PFN_glfwSetMouseButtonCallback)(GLFWwindow*, GLFWmousebuttonfun);
50
+ typedef GLFWmonitor* (*PFN_glfwGetPrimaryMonitor)(void);
51
+ typedef const GLFWvidmode* (*PFN_glfwGetVideoMode)(GLFWmonitor*);
52
+ typedef const GLFWvidmode* (*PFN_glfwGetVideoModes)(GLFWmonitor*, int*);
53
+ typedef void (*PFN_glfwSetInputMode)(GLFWwindow*, int, int);
54
+ typedef int (*PFN_glfwGetInputMode)(GLFWwindow*, int);
55
+
56
+ /* Function pointers storage */
57
+ static PFN_glfwInit pfn_glfwInit = NULL;
58
+ static PFN_glfwTerminate pfn_glfwTerminate = NULL;
59
+ static PFN_glfwCreateWindow pfn_glfwCreateWindow = NULL;
60
+ static PFN_glfwDestroyWindow pfn_glfwDestroyWindow = NULL;
61
+ static PFN_glfwWindowHint pfn_glfwWindowHint = NULL;
62
+ static PFN_glfwSetWindowAttrib pfn_glfwSetWindowAttrib = NULL;
63
+ static PFN_glfwSetWindowTitle pfn_glfwSetWindowTitle = NULL;
64
+ static PFN_glfwSetWindowMonitor pfn_glfwSetWindowMonitor = NULL;
65
+ static PFN_glfwWindowShouldClose pfn_glfwWindowShouldClose = NULL;
66
+ static PFN_glfwSetWindowShouldClose pfn_glfwSetWindowShouldClose = NULL;
67
+ static PFN_glfwFocusWindow pfn_glfwFocusWindow = NULL;
68
+ static PFN_glfwMakeContextCurrent pfn_glfwMakeContextCurrent = NULL;
69
+ static PFN_glfwGetFramebufferSize pfn_glfwGetFramebufferSize = NULL;
70
+ static PFN_glfwPollEvents pfn_glfwPollEvents = NULL;
71
+ static PFN_glfwSwapBuffers pfn_glfwSwapBuffers = NULL;
72
+ static PFN_glfwSwapInterval pfn_glfwSwapInterval = NULL;
73
+ static PFN_glfwSetKeyCallback pfn_glfwSetKeyCallback = NULL;
74
+ static PFN_glfwSetCursorPosCallback pfn_glfwSetCursorPosCallback = NULL;
75
+ static PFN_glfwSetMouseButtonCallback pfn_glfwSetMouseButtonCallback = NULL;
76
+ static PFN_glfwGetPrimaryMonitor pfn_glfwGetPrimaryMonitor = NULL;
77
+ static PFN_glfwGetVideoMode pfn_glfwGetVideoMode = NULL;
78
+ static PFN_glfwGetVideoModes pfn_glfwGetVideoModes = NULL;
79
+ static PFN_glfwSetInputMode pfn_glfwSetInputMode = NULL;
80
+ static PFN_glfwGetInputMode pfn_glfwGetInputMode = NULL;
81
+
82
+ /* Library handle */
83
+ static void* glfw_lib = NULL;
84
+
85
+ /* Module reference */
86
+ static VALUE mGLFWNative;
87
+
88
+ /* Callback storage - we store Ruby procs */
89
+ static VALUE rb_key_callback = Qnil;
90
+ static VALUE rb_cursor_pos_callback = Qnil;
91
+ static VALUE rb_mouse_button_callback = Qnil;
92
+
93
+ /* Helper to load a function pointer */
94
+ static void* load_func(const char* name) {
95
+ if (!glfw_lib) {
96
+ rb_raise(rb_eRuntimeError, "GLFW library not loaded. Call load_lib first.");
97
+ }
98
+ #ifdef _WIN32
99
+ return GetProcAddress((HMODULE)glfw_lib, name);
100
+ #else
101
+ return dlsym(glfw_lib, name);
102
+ #endif
103
+ }
104
+
105
+ /* load_lib(path) - Load the GLFW shared library */
106
+ static VALUE rb_glfw_load_lib(VALUE self, VALUE path) {
107
+ const char* lib_path = StringValueCStr(path);
108
+
109
+ #ifdef _WIN32
110
+ glfw_lib = LoadLibrary(lib_path);
111
+ #else
112
+ glfw_lib = dlopen(lib_path, RTLD_LAZY | RTLD_GLOBAL);
113
+ #endif
114
+
115
+ if (!glfw_lib) {
116
+ #ifdef _WIN32
117
+ rb_raise(rb_eRuntimeError, "Failed to load GLFW library: %s", lib_path);
118
+ #else
119
+ rb_raise(rb_eRuntimeError, "Failed to load GLFW library: %s - %s", lib_path, dlerror());
120
+ #endif
121
+ }
122
+
123
+ /* Load all function pointers */
124
+ pfn_glfwInit = (PFN_glfwInit)load_func("glfwInit");
125
+ pfn_glfwTerminate = (PFN_glfwTerminate)load_func("glfwTerminate");
126
+ pfn_glfwCreateWindow = (PFN_glfwCreateWindow)load_func("glfwCreateWindow");
127
+ pfn_glfwDestroyWindow = (PFN_glfwDestroyWindow)load_func("glfwDestroyWindow");
128
+ pfn_glfwWindowHint = (PFN_glfwWindowHint)load_func("glfwWindowHint");
129
+ pfn_glfwSetWindowAttrib = (PFN_glfwSetWindowAttrib)load_func("glfwSetWindowAttrib");
130
+ pfn_glfwSetWindowTitle = (PFN_glfwSetWindowTitle)load_func("glfwSetWindowTitle");
131
+ pfn_glfwSetWindowMonitor = (PFN_glfwSetWindowMonitor)load_func("glfwSetWindowMonitor");
132
+ pfn_glfwWindowShouldClose = (PFN_glfwWindowShouldClose)load_func("glfwWindowShouldClose");
133
+ pfn_glfwSetWindowShouldClose = (PFN_glfwSetWindowShouldClose)load_func("glfwSetWindowShouldClose");
134
+ pfn_glfwFocusWindow = (PFN_glfwFocusWindow)load_func("glfwFocusWindow");
135
+ pfn_glfwMakeContextCurrent = (PFN_glfwMakeContextCurrent)load_func("glfwMakeContextCurrent");
136
+ pfn_glfwGetFramebufferSize = (PFN_glfwGetFramebufferSize)load_func("glfwGetFramebufferSize");
137
+ pfn_glfwPollEvents = (PFN_glfwPollEvents)load_func("glfwPollEvents");
138
+ pfn_glfwSwapBuffers = (PFN_glfwSwapBuffers)load_func("glfwSwapBuffers");
139
+ pfn_glfwSwapInterval = (PFN_glfwSwapInterval)load_func("glfwSwapInterval");
140
+ pfn_glfwSetKeyCallback = (PFN_glfwSetKeyCallback)load_func("glfwSetKeyCallback");
141
+ pfn_glfwSetCursorPosCallback = (PFN_glfwSetCursorPosCallback)load_func("glfwSetCursorPosCallback");
142
+ pfn_glfwSetMouseButtonCallback = (PFN_glfwSetMouseButtonCallback)load_func("glfwSetMouseButtonCallback");
143
+ pfn_glfwGetPrimaryMonitor = (PFN_glfwGetPrimaryMonitor)load_func("glfwGetPrimaryMonitor");
144
+ pfn_glfwGetVideoMode = (PFN_glfwGetVideoMode)load_func("glfwGetVideoMode");
145
+ pfn_glfwGetVideoModes = (PFN_glfwGetVideoModes)load_func("glfwGetVideoModes");
146
+ pfn_glfwSetInputMode = (PFN_glfwSetInputMode)load_func("glfwSetInputMode");
147
+ pfn_glfwGetInputMode = (PFN_glfwGetInputMode)load_func("glfwGetInputMode");
148
+
149
+ return Qtrue;
150
+ }
151
+
152
+ /* Init() */
153
+ static VALUE rb_glfw_init(VALUE self) {
154
+ if (!pfn_glfwInit) rb_raise(rb_eRuntimeError, "GLFW not loaded");
155
+ int result = pfn_glfwInit();
156
+ return INT2NUM(result);
157
+ }
158
+
159
+ /* Terminate() */
160
+ static VALUE rb_glfw_terminate(VALUE self) {
161
+ if (!pfn_glfwTerminate) rb_raise(rb_eRuntimeError, "GLFW not loaded");
162
+ pfn_glfwTerminate();
163
+ return Qnil;
164
+ }
165
+
166
+ /* CreateWindow(width, height, title, monitor, share) */
167
+ static VALUE rb_glfw_create_window(VALUE self, VALUE width, VALUE height, VALUE title, VALUE monitor, VALUE share) {
168
+ if (!pfn_glfwCreateWindow) rb_raise(rb_eRuntimeError, "GLFW not loaded");
169
+ const char* title_str = StringValueCStr(title);
170
+ GLFWmonitor* mon = NIL_P(monitor) ? NULL : (GLFWmonitor*)(uintptr_t)NUM2ULL(monitor);
171
+ GLFWwindow* shr = NIL_P(share) ? NULL : (GLFWwindow*)(uintptr_t)NUM2ULL(share);
172
+ GLFWwindow* window = pfn_glfwCreateWindow(NUM2INT(width), NUM2INT(height), title_str, mon, shr);
173
+ if (!window) return Qnil;
174
+ return ULL2NUM((uintptr_t)window);
175
+ }
176
+
177
+ /* DestroyWindow(window) */
178
+ static VALUE rb_glfw_destroy_window(VALUE self, VALUE window) {
179
+ if (!pfn_glfwDestroyWindow) rb_raise(rb_eRuntimeError, "GLFW not loaded");
180
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
181
+ pfn_glfwDestroyWindow(win);
182
+ return Qnil;
183
+ }
184
+
185
+ /* WindowHint(hint, value) */
186
+ static VALUE rb_glfw_window_hint(VALUE self, VALUE hint, VALUE value) {
187
+ if (!pfn_glfwWindowHint) rb_raise(rb_eRuntimeError, "GLFW not loaded");
188
+ pfn_glfwWindowHint(NUM2INT(hint), NUM2INT(value));
189
+ return Qnil;
190
+ }
191
+
192
+ /* SetWindowAttrib(window, attrib, value) */
193
+ static VALUE rb_glfw_set_window_attrib(VALUE self, VALUE window, VALUE attrib, VALUE value) {
194
+ if (!pfn_glfwSetWindowAttrib) rb_raise(rb_eRuntimeError, "GLFW not loaded");
195
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
196
+ pfn_glfwSetWindowAttrib(win, NUM2INT(attrib), NUM2INT(value));
197
+ return Qnil;
198
+ }
199
+
200
+ /* SetWindowTitle(window, title) */
201
+ static VALUE rb_glfw_set_window_title(VALUE self, VALUE window, VALUE title) {
202
+ if (!pfn_glfwSetWindowTitle) rb_raise(rb_eRuntimeError, "GLFW not loaded");
203
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
204
+ const char* title_str = StringValueCStr(title);
205
+ pfn_glfwSetWindowTitle(win, title_str);
206
+ return Qnil;
207
+ }
208
+
209
+ /* SetWindowMonitor(window, monitor, xpos, ypos, width, height, refreshRate) */
210
+ static VALUE rb_glfw_set_window_monitor(VALUE self, VALUE window, VALUE monitor, VALUE xpos, VALUE ypos, VALUE width, VALUE height, VALUE refresh_rate) {
211
+ if (!pfn_glfwSetWindowMonitor) rb_raise(rb_eRuntimeError, "GLFW not loaded");
212
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
213
+ GLFWmonitor* mon = NIL_P(monitor) ? NULL : (GLFWmonitor*)(uintptr_t)NUM2ULL(monitor);
214
+ pfn_glfwSetWindowMonitor(win, mon, NUM2INT(xpos), NUM2INT(ypos), NUM2INT(width), NUM2INT(height), NUM2INT(refresh_rate));
215
+ return Qnil;
216
+ }
217
+
218
+ /* WindowShouldClose(window) */
219
+ static VALUE rb_glfw_window_should_close(VALUE self, VALUE window) {
220
+ if (!pfn_glfwWindowShouldClose) rb_raise(rb_eRuntimeError, "GLFW not loaded");
221
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
222
+ int result = pfn_glfwWindowShouldClose(win);
223
+ return INT2NUM(result);
224
+ }
225
+
226
+ /* SetWindowShouldClose(window, value) */
227
+ static VALUE rb_glfw_set_window_should_close(VALUE self, VALUE window, VALUE value) {
228
+ if (!pfn_glfwSetWindowShouldClose) rb_raise(rb_eRuntimeError, "GLFW not loaded");
229
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
230
+ pfn_glfwSetWindowShouldClose(win, NUM2INT(value));
231
+ return Qnil;
232
+ }
233
+
234
+ /* FocusWindow(window) */
235
+ static VALUE rb_glfw_focus_window(VALUE self, VALUE window) {
236
+ if (!pfn_glfwFocusWindow) rb_raise(rb_eRuntimeError, "GLFW not loaded");
237
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
238
+ pfn_glfwFocusWindow(win);
239
+ return Qnil;
240
+ }
241
+
242
+ /* MakeContextCurrent(window) */
243
+ static VALUE rb_glfw_make_context_current(VALUE self, VALUE window) {
244
+ if (!pfn_glfwMakeContextCurrent) rb_raise(rb_eRuntimeError, "GLFW not loaded");
245
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
246
+ pfn_glfwMakeContextCurrent(win);
247
+ return Qnil;
248
+ }
249
+
250
+ /* GetFramebufferSize(window, width_buf, height_buf) - writes to buffers */
251
+ static VALUE rb_glfw_get_framebuffer_size(VALUE self, VALUE window, VALUE width_buf, VALUE height_buf) {
252
+ if (!pfn_glfwGetFramebufferSize) rb_raise(rb_eRuntimeError, "GLFW not loaded");
253
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
254
+ Check_Type(width_buf, T_STRING);
255
+ Check_Type(height_buf, T_STRING);
256
+ int* w_ptr = (int*)RSTRING_PTR(width_buf);
257
+ int* h_ptr = (int*)RSTRING_PTR(height_buf);
258
+ pfn_glfwGetFramebufferSize(win, w_ptr, h_ptr);
259
+ return Qnil;
260
+ }
261
+
262
+ /* PollEvents() */
263
+ static VALUE rb_glfw_poll_events(VALUE self) {
264
+ if (!pfn_glfwPollEvents) rb_raise(rb_eRuntimeError, "GLFW not loaded");
265
+ pfn_glfwPollEvents();
266
+ return Qnil;
267
+ }
268
+
269
+ /* SwapBuffers(window) */
270
+ static VALUE rb_glfw_swap_buffers(VALUE self, VALUE window) {
271
+ if (!pfn_glfwSwapBuffers) rb_raise(rb_eRuntimeError, "GLFW not loaded");
272
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
273
+ pfn_glfwSwapBuffers(win);
274
+ return Qnil;
275
+ }
276
+
277
+ /* SwapInterval(interval) */
278
+ static VALUE rb_glfw_swap_interval(VALUE self, VALUE interval) {
279
+ if (!pfn_glfwSwapInterval) rb_raise(rb_eRuntimeError, "GLFW not loaded");
280
+ pfn_glfwSwapInterval(NUM2INT(interval));
281
+ return Qnil;
282
+ }
283
+
284
+ /* GetPrimaryMonitor() */
285
+ static VALUE rb_glfw_get_primary_monitor(VALUE self) {
286
+ if (!pfn_glfwGetPrimaryMonitor) rb_raise(rb_eRuntimeError, "GLFW not loaded");
287
+ GLFWmonitor* monitor = pfn_glfwGetPrimaryMonitor();
288
+ if (!monitor) return Qnil;
289
+ return ULL2NUM((uintptr_t)monitor);
290
+ }
291
+
292
+ /* GetVideoMode(monitor) - returns pointer as integer */
293
+ static VALUE rb_glfw_get_video_mode(VALUE self, VALUE monitor) {
294
+ if (!pfn_glfwGetVideoMode) rb_raise(rb_eRuntimeError, "GLFW not loaded");
295
+ GLFWmonitor* mon = (GLFWmonitor*)(uintptr_t)NUM2ULL(monitor);
296
+ const GLFWvidmode* mode = pfn_glfwGetVideoMode(mon);
297
+ if (!mode) return Qnil;
298
+ return ULL2NUM((uintptr_t)mode);
299
+ }
300
+
301
+ /* GetVideoModes(monitor, count_buf) - returns pointer as integer, writes count to buffer */
302
+ static VALUE rb_glfw_get_video_modes(VALUE self, VALUE monitor, VALUE count_buf) {
303
+ if (!pfn_glfwGetVideoModes) rb_raise(rb_eRuntimeError, "GLFW not loaded");
304
+ GLFWmonitor* mon = (GLFWmonitor*)(uintptr_t)NUM2ULL(monitor);
305
+ Check_Type(count_buf, T_STRING);
306
+ int* count_ptr = (int*)RSTRING_PTR(count_buf);
307
+ const GLFWvidmode* modes = pfn_glfwGetVideoModes(mon, count_ptr);
308
+ if (!modes) return Qnil;
309
+ return ULL2NUM((uintptr_t)modes);
310
+ }
311
+
312
+ /* SetInputMode(window, mode, value) */
313
+ static VALUE rb_glfw_set_input_mode(VALUE self, VALUE window, VALUE mode, VALUE value) {
314
+ if (!pfn_glfwSetInputMode) rb_raise(rb_eRuntimeError, "GLFW not loaded");
315
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
316
+ pfn_glfwSetInputMode(win, NUM2INT(mode), NUM2INT(value));
317
+ return Qnil;
318
+ }
319
+
320
+ /* GetInputMode(window, mode) */
321
+ static VALUE rb_glfw_get_input_mode(VALUE self, VALUE window, VALUE mode) {
322
+ if (!pfn_glfwGetInputMode) rb_raise(rb_eRuntimeError, "GLFW not loaded");
323
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
324
+ int result = pfn_glfwGetInputMode(win, NUM2INT(mode));
325
+ return INT2NUM(result);
326
+ }
327
+
328
+ /* Callback trampolines - these are called by GLFW and invoke Ruby procs */
329
+ static void key_callback_trampoline(GLFWwindow* window, int key, int scancode, int action, int mods) {
330
+ if (rb_key_callback != Qnil) {
331
+ VALUE args[5];
332
+ args[0] = ULL2NUM((uintptr_t)window);
333
+ args[1] = INT2NUM(key);
334
+ args[2] = INT2NUM(scancode);
335
+ args[3] = INT2NUM(action);
336
+ args[4] = INT2NUM(mods);
337
+ rb_funcall2(rb_key_callback, rb_intern("call"), 5, args);
338
+ }
339
+ }
340
+
341
+ static void cursor_pos_callback_trampoline(GLFWwindow* window, double xpos, double ypos) {
342
+ if (rb_cursor_pos_callback != Qnil) {
343
+ VALUE args[3];
344
+ args[0] = ULL2NUM((uintptr_t)window);
345
+ args[1] = DBL2NUM(xpos);
346
+ args[2] = DBL2NUM(ypos);
347
+ rb_funcall2(rb_cursor_pos_callback, rb_intern("call"), 3, args);
348
+ }
349
+ }
350
+
351
+ static void mouse_button_callback_trampoline(GLFWwindow* window, int button, int action, int mods) {
352
+ if (rb_mouse_button_callback != Qnil) {
353
+ VALUE args[4];
354
+ args[0] = ULL2NUM((uintptr_t)window);
355
+ args[1] = INT2NUM(button);
356
+ args[2] = INT2NUM(action);
357
+ args[3] = INT2NUM(mods);
358
+ rb_funcall2(rb_mouse_button_callback, rb_intern("call"), 4, args);
359
+ }
360
+ }
361
+
362
+ /* SetKeyCallback(window, callback) - callback is a Ruby proc/block */
363
+ static VALUE rb_glfw_set_key_callback(VALUE self, VALUE window, VALUE callback) {
364
+ if (!pfn_glfwSetKeyCallback) rb_raise(rb_eRuntimeError, "GLFW not loaded");
365
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
366
+
367
+ rb_key_callback = callback;
368
+ if (NIL_P(callback)) {
369
+ pfn_glfwSetKeyCallback(win, NULL);
370
+ } else {
371
+ pfn_glfwSetKeyCallback(win, key_callback_trampoline);
372
+ }
373
+ return Qnil;
374
+ }
375
+
376
+ /* SetCursorPosCallback(window, callback) */
377
+ static VALUE rb_glfw_set_cursor_pos_callback(VALUE self, VALUE window, VALUE callback) {
378
+ if (!pfn_glfwSetCursorPosCallback) rb_raise(rb_eRuntimeError, "GLFW not loaded");
379
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
380
+
381
+ rb_cursor_pos_callback = callback;
382
+ if (NIL_P(callback)) {
383
+ pfn_glfwSetCursorPosCallback(win, NULL);
384
+ } else {
385
+ pfn_glfwSetCursorPosCallback(win, cursor_pos_callback_trampoline);
386
+ }
387
+ return Qnil;
388
+ }
389
+
390
+ /* SetMouseButtonCallback(window, callback) */
391
+ static VALUE rb_glfw_set_mouse_button_callback(VALUE self, VALUE window, VALUE callback) {
392
+ if (!pfn_glfwSetMouseButtonCallback) rb_raise(rb_eRuntimeError, "GLFW not loaded");
393
+ GLFWwindow* win = (GLFWwindow*)(uintptr_t)NUM2ULL(window);
394
+
395
+ rb_mouse_button_callback = callback;
396
+ if (NIL_P(callback)) {
397
+ pfn_glfwSetMouseButtonCallback(win, NULL);
398
+ } else {
399
+ pfn_glfwSetMouseButtonCallback(win, mouse_button_callback_trampoline);
400
+ }
401
+ return Qnil;
402
+ }
403
+
404
+ /* Extension init */
405
+ void Init_glfw_native(void) {
406
+ mGLFWNative = rb_define_module("GLFWNative");
407
+
408
+ /* Register callbacks for GC marking */
409
+ rb_gc_register_address(&rb_key_callback);
410
+ rb_gc_register_address(&rb_cursor_pos_callback);
411
+ rb_gc_register_address(&rb_mouse_button_callback);
412
+
413
+ /* Library loading */
414
+ rb_define_module_function(mGLFWNative, "load_lib", rb_glfw_load_lib, 1);
415
+
416
+ /* Initialization */
417
+ rb_define_module_function(mGLFWNative, "init", rb_glfw_init, 0);
418
+ rb_define_module_function(mGLFWNative, "terminate", rb_glfw_terminate, 0);
419
+
420
+ /* Window */
421
+ rb_define_module_function(mGLFWNative, "create_window", rb_glfw_create_window, 5);
422
+ rb_define_module_function(mGLFWNative, "destroy_window", rb_glfw_destroy_window, 1);
423
+ rb_define_module_function(mGLFWNative, "window_hint", rb_glfw_window_hint, 2);
424
+ rb_define_module_function(mGLFWNative, "set_window_attrib", rb_glfw_set_window_attrib, 3);
425
+ rb_define_module_function(mGLFWNative, "set_window_title", rb_glfw_set_window_title, 2);
426
+ rb_define_module_function(mGLFWNative, "set_window_monitor", rb_glfw_set_window_monitor, 7);
427
+ rb_define_module_function(mGLFWNative, "window_should_close", rb_glfw_window_should_close, 1);
428
+ rb_define_module_function(mGLFWNative, "set_window_should_close", rb_glfw_set_window_should_close, 2);
429
+ rb_define_module_function(mGLFWNative, "focus_window", rb_glfw_focus_window, 1);
430
+ rb_define_module_function(mGLFWNative, "make_context_current", rb_glfw_make_context_current, 1);
431
+ rb_define_module_function(mGLFWNative, "get_framebuffer_size", rb_glfw_get_framebuffer_size, 3);
432
+
433
+ /* Events */
434
+ rb_define_module_function(mGLFWNative, "poll_events", rb_glfw_poll_events, 0);
435
+ rb_define_module_function(mGLFWNative, "swap_buffers", rb_glfw_swap_buffers, 1);
436
+ rb_define_module_function(mGLFWNative, "swap_interval", rb_glfw_swap_interval, 1);
437
+
438
+ /* Callbacks */
439
+ rb_define_module_function(mGLFWNative, "set_key_callback", rb_glfw_set_key_callback, 2);
440
+ rb_define_module_function(mGLFWNative, "set_cursor_pos_callback", rb_glfw_set_cursor_pos_callback, 2);
441
+ rb_define_module_function(mGLFWNative, "set_mouse_button_callback", rb_glfw_set_mouse_button_callback, 2);
442
+
443
+ /* Monitor */
444
+ rb_define_module_function(mGLFWNative, "get_primary_monitor", rb_glfw_get_primary_monitor, 0);
445
+ rb_define_module_function(mGLFWNative, "get_video_mode", rb_glfw_get_video_mode, 1);
446
+ rb_define_module_function(mGLFWNative, "get_video_modes", rb_glfw_get_video_modes, 2);
447
+
448
+ /* Input */
449
+ rb_define_module_function(mGLFWNative, "set_input_mode", rb_glfw_set_input_mode, 3);
450
+ rb_define_module_function(mGLFWNative, "get_input_mode", rb_glfw_get_input_mode, 2);
451
+ }
@@ -0,0 +1,36 @@
1
+ 0
2
+ 1
3
+ 2
4
+ 3
5
+ 4
6
+ 5
7
+ 6
8
+ 7
9
+ 8
10
+ 9
11
+ 10
12
+ 11
13
+ 12
14
+ 13
15
+ 14
16
+ 15
17
+ 16
18
+ 17
19
+ 18
20
+ 19
21
+ 20
22
+ 21
23
+ 22
24
+ 23
25
+ 24
26
+ 25
27
+ 26
28
+ 27
29
+ 28
30
+ 29
31
+ 30
32
+ 31
33
+ 32
34
+ 33
35
+ 34
36
+ 35