ruby_rpg 0.0.5 → 0.1.1

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 (606) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +43 -21
  3. data/THIRD_PARTY_NOTICES.md +61 -0
  4. data/bin/build.bash +13 -13
  5. data/bin/import +54 -44
  6. data/ext/gl_native/extconf.rb +20 -0
  7. data/ext/gl_native/gl_native.c +563 -0
  8. data/ext/glfw_native/extconf.rb +18 -0
  9. data/ext/glfw_native/glfw_native.c +451 -0
  10. data/lib/engine/assets/Bangers-Regular.ttf +0 -0
  11. data/lib/engine/assets/Caveat-Regular.ttf +0 -0
  12. data/lib/engine/assets/JetBrainsMono-Regular.ttf +0 -0
  13. data/lib/engine/assets/NotoSerif-Regular.ttf +0 -0
  14. data/lib/engine/assets/OpenSans-Regular.ttf +0 -0
  15. data/lib/engine/assets/Oswald-Regular.ttf +0 -0
  16. data/lib/engine/assets/PressStart2P-Regular.ttf +0 -0
  17. data/lib/engine/assets/_imported/Bangers-Regular.json +1 -0
  18. data/lib/engine/assets/_imported/Bangers-Regular.png +0 -0
  19. data/lib/engine/assets/_imported/Caveat-Regular.json +1 -0
  20. data/lib/engine/assets/_imported/Caveat-Regular.png +0 -0
  21. data/lib/engine/assets/_imported/JetBrainsMono-Regular.json +1 -0
  22. data/lib/engine/assets/_imported/JetBrainsMono-Regular.png +0 -0
  23. data/lib/engine/assets/_imported/NotoSerif-Regular.json +1 -0
  24. data/lib/engine/assets/_imported/NotoSerif-Regular.png +0 -0
  25. data/lib/engine/assets/_imported/OpenSans-Regular.json +1 -0
  26. data/lib/engine/assets/_imported/OpenSans-Regular.png +0 -0
  27. data/lib/engine/assets/_imported/Oswald-Regular.json +1 -0
  28. data/lib/engine/assets/_imported/Oswald-Regular.png +0 -0
  29. data/lib/engine/assets/_imported/PressStart2P-Regular.json +1 -0
  30. data/lib/engine/assets/_imported/PressStart2P-Regular.png +0 -0
  31. data/lib/engine/assets/_imported/cube.index_data +36 -0
  32. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  33. data/lib/engine/assets/_imported/plane.index_data +6 -0
  34. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  35. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  36. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  37. data/lib/engine/assets/cube.obj +46 -0
  38. data/lib/engine/assets/plane.obj +16 -0
  39. data/lib/engine/assets/sphere.obj +2488 -0
  40. data/lib/engine/autoloader.rb +11 -11
  41. data/lib/engine/camera.rb +12 -12
  42. data/lib/engine/component.rb +65 -63
  43. data/lib/engine/components/audio_source.rb +43 -41
  44. data/lib/engine/components/direction_light.rb +102 -23
  45. data/lib/engine/components/orthographic_camera.rb +60 -54
  46. data/lib/engine/components/perspective_camera.rb +76 -53
  47. data/lib/engine/components/point_light.rb +80 -24
  48. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  49. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  50. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  51. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  52. data/lib/engine/components/spot_light.rb +90 -0
  53. data/lib/engine/components/sprite_animator.rb +42 -0
  54. data/lib/engine/components/ui/flex/layout.rb +94 -0
  55. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  56. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  57. data/lib/engine/components/ui/flex.rb +60 -0
  58. data/lib/engine/components/ui/font_renderer.rb +57 -0
  59. data/lib/engine/components/ui/rect.rb +117 -0
  60. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  61. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  62. data/lib/engine/compute_shader.rb +14 -93
  63. data/lib/engine/compute_texture.rb +13 -0
  64. data/lib/engine/cursor.rb +43 -43
  65. data/lib/engine/debugging.rb +41 -41
  66. data/lib/engine/engine.rb +127 -131
  67. data/lib/engine/font.rb +127 -74
  68. data/lib/engine/game_object.rb +306 -234
  69. data/lib/engine/gl.rb +439 -0
  70. data/lib/engine/glfw.rb +151 -0
  71. data/lib/engine/importers/font_importer.rb +69 -69
  72. data/lib/engine/importers/obj_file.rb +244 -244
  73. data/lib/engine/importers/obj_importer.rb +33 -33
  74. data/lib/engine/input.rb +212 -105
  75. data/lib/engine/material.rb +214 -79
  76. data/lib/engine/matrix_helpers.rb +38 -0
  77. data/lib/engine/mesh.rb +68 -43
  78. data/lib/engine/metal/compute_shader.rb +118 -0
  79. data/lib/engine/metal/compute_texture.rb +176 -0
  80. data/lib/engine/metal/device.rb +98 -0
  81. data/lib/engine/metal/metal_bindings.rb +126 -0
  82. data/lib/engine/opengl/compute_shader.rb +77 -0
  83. data/lib/engine/opengl/compute_texture.rb +31 -0
  84. data/lib/engine/path.rb +92 -92
  85. data/lib/engine/physics/collision.rb +12 -12
  86. data/lib/engine/physics/components/cube_collider.rb +6 -6
  87. data/lib/engine/physics/components/rigidbody.rb +106 -103
  88. data/lib/engine/physics/components/sphere_collider.rb +103 -93
  89. data/lib/engine/physics/physics_resolver.rb +49 -37
  90. data/lib/engine/polygon_mesh.rb +45 -45
  91. data/lib/engine/quaternion.rb +234 -234
  92. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  93. data/lib/engine/rendering/gpu_timer.rb +68 -0
  94. data/lib/engine/rendering/instance_renderer.rb +232 -153
  95. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  96. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  97. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  98. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  99. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  100. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  101. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  102. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  103. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  104. data/lib/engine/rendering/render_pipeline.rb +267 -35
  105. data/lib/engine/rendering/render_texture.rb +118 -0
  106. data/lib/engine/rendering/screen_quad.rb +64 -0
  107. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  108. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  109. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  110. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  111. data/lib/engine/screenshoter.rb +34 -34
  112. data/lib/engine/serialization/graph_serializer.rb +74 -0
  113. data/lib/engine/serialization/object_serializer.rb +98 -0
  114. data/lib/engine/serialization/serializable.rb +78 -0
  115. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  116. data/lib/engine/shader.rb +215 -119
  117. data/lib/engine/shaders/colour_frag.glsl +16 -8
  118. data/lib/engine/shaders/colour_vertex.glsl +20 -13
  119. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  120. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  121. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  122. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +15 -14
  123. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  124. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  125. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  126. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  127. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  128. data/lib/engine/shaders/mesh_frag.glsl +53 -102
  129. data/lib/engine/shaders/mesh_vertex.glsl +25 -25
  130. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  131. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  132. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  133. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  134. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  135. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  136. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  137. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  138. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  139. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  140. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  141. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  142. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  143. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  144. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  145. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  146. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  147. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  148. data/lib/engine/shaders/sprite_frag.glsl +17 -17
  149. data/lib/engine/shaders/sprite_vertex.glsl +15 -15
  150. data/lib/engine/shaders/text_frag.glsl +15 -15
  151. data/lib/engine/shaders/text_vertex.glsl +31 -31
  152. data/lib/engine/shaders/ui_sprite_frag.glsl +15 -15
  153. data/lib/engine/shaders/ui_sprite_vertex.glsl +15 -15
  154. data/lib/engine/shaders/vertex_lit_frag.glsl +33 -89
  155. data/lib/engine/shaders/vertex_lit_vertex.glsl +28 -28
  156. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  157. data/lib/engine/standard_objects/cube.rb +23 -0
  158. data/lib/engine/standard_objects/default_material.rb +20 -0
  159. data/lib/engine/standard_objects/plane.rb +23 -0
  160. data/lib/engine/standard_objects/sphere.rb +23 -0
  161. data/lib/engine/tangent_calculator.rb +42 -42
  162. data/lib/engine/texture.rb +62 -53
  163. data/lib/engine/ui/rect.rb +16 -0
  164. data/lib/engine/video_mode.rb +37 -37
  165. data/lib/engine/window.rb +126 -126
  166. data/lib/ruby_rpg.rb +116 -58
  167. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  168. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  169. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  170. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  171. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  172. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +23 -23
  173. metadata +144 -463
  174. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  175. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  176. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  177. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  178. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  179. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  180. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  181. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  182. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  183. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  184. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  185. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  186. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  187. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  188. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  189. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  190. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  191. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  192. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  193. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  194. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  195. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  196. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  197. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  198. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  199. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  200. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  201. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  202. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  203. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  204. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  205. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  206. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  207. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  208. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  209. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  210. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  211. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  212. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  213. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  214. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  215. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  216. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  217. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  218. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  219. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  220. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  221. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  222. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  223. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  224. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  225. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  226. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  227. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  228. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  229. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  230. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  231. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  232. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  233. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  234. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  235. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  236. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  237. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  238. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  239. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  240. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  241. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  242. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  243. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  244. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  245. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  246. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  247. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  248. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  249. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  250. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  251. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  300. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  301. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  302. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  303. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  304. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  305. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  306. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  307. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  308. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  309. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  310. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  311. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  312. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  313. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  314. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  315. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  316. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  317. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  318. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  319. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  320. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  321. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  322. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  323. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  324. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  325. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  326. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  327. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  328. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  329. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  330. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  331. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  332. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  333. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  334. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  335. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  336. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  337. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  338. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  339. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  340. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  341. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  342. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  343. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  344. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  345. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  346. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  347. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  348. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  349. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  350. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  351. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  352. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  353. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  354. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  355. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  356. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  357. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  358. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  359. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  360. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  361. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  362. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  363. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  364. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  365. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  366. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  367. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  368. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  369. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  370. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  371. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  372. data/glfw-3.4.bin.WIN64/README.md +0 -70
  373. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  374. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  375. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  376. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  377. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  378. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  379. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  380. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  381. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  382. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  383. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  384. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  385. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  386. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  387. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  388. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  389. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  390. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  391. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  392. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  393. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  394. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  395. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  396. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  397. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  398. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  399. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  400. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  401. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  402. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  403. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  404. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  405. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  406. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  407. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  408. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  409. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  410. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  411. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  412. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  413. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  414. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  415. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  416. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  417. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  418. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  419. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  420. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  421. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  422. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  423. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  424. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  425. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  426. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  427. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  428. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  429. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  430. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  431. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  432. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  433. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  434. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  435. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  436. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  437. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  438. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  439. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  440. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  441. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  442. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  443. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  444. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  445. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  446. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  447. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  448. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  449. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  450. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  452. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  453. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  454. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  455. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  456. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  457. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  458. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  459. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  460. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  461. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  462. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  463. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  464. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  465. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  466. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  467. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  468. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  469. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  470. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  471. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  472. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  473. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  474. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  475. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  476. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  477. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  478. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  479. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  480. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  481. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  482. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  483. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  484. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  485. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  487. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  488. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  489. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  490. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  491. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  492. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  493. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  494. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  495. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  496. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  497. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  499. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  500. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  502. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  504. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  505. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  506. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  507. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  508. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  509. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  510. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  511. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  512. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  513. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  514. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  515. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  516. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  517. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  518. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  519. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  520. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  521. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  522. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  523. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  524. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  525. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  526. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  527. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  528. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  529. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  530. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  531. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  532. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  533. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  534. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  535. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  536. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  537. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  538. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  539. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  540. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  541. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  542. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  543. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  544. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  545. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  546. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  547. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  548. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  549. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  550. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  551. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  552. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  553. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  554. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  555. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  556. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  557. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  558. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  559. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  560. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  561. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  562. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  563. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  564. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  565. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  566. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  567. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  568. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  569. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  570. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  571. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  572. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  573. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  574. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  575. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  576. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  577. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  578. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  579. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  580. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  581. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  582. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  583. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  584. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  585. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  586. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  587. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  588. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  589. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  590. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  591. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  592. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  593. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  594. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  595. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  596. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  597. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  598. data/lib/engine/components/font_renderer.rb +0 -134
  599. data/lib/engine/components/mesh_renderer.rb +0 -31
  600. data/lib/engine/components/sprite_renderer.rb +0 -141
  601. data/lib/engine/components/ui_font_renderer.rb +0 -140
  602. data/lib/engine/components/ui_sprite_clickbox.rb +0 -62
  603. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  604. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  605. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  606. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
@@ -1,24 +1,80 @@
1
- # frozen_string_literal: true
2
-
3
- module Engine::Components
4
- class PointLight < Engine::Component
5
- attr_accessor :range, :colour
6
-
7
- def initialize(range: 300, colour: [1.0, 1.0, 1.0])
8
- @range = range
9
- @colour = colour
10
- end
11
-
12
- def start
13
- PointLight.point_lights << self
14
- end
15
-
16
- def destroy!
17
- PointLight.point_lights.delete(self)
18
- end
19
-
20
- def self.point_lights
21
- @point_lights ||= []
22
- end
23
- end
24
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class PointLight < Engine::Component
5
+ include Engine::MatrixHelpers
6
+
7
+ NR_SHADOW_CASTING_POINT_LIGHTS = 4
8
+
9
+ # Cubemap face directions: +X, -X, +Y, -Y, +Z, -Z
10
+ CUBE_DIRECTIONS = [
11
+ { dir: Vector[1, 0, 0], up: Vector[0, -1, 0] }, # +X
12
+ { dir: Vector[-1, 0, 0], up: Vector[0, -1, 0] }, # -X
13
+ { dir: Vector[0, 1, 0], up: Vector[0, 0, 1] }, # +Y
14
+ { dir: Vector[0, -1, 0], up: Vector[0, 0, -1] }, # -Y
15
+ { dir: Vector[0, 0, 1], up: Vector[0, -1, 0] }, # +Z
16
+ { dir: Vector[0, 0, -1], up: Vector[0, -1, 0] } # -Z
17
+ ].freeze
18
+
19
+ serialize :range, :colour, :cast_shadows
20
+
21
+ attr_accessor :range, :colour, :cast_shadows, :shadow_layer_index
22
+
23
+ def awake
24
+ @range ||= 300
25
+ @colour ||= [1.0, 1.0, 1.0]
26
+ @cast_shadows = false if @cast_shadows.nil?
27
+ @shadow_layer_index = nil
28
+ @cached_light_space_matrices = nil
29
+ end
30
+
31
+ def start
32
+ PointLight.point_lights << self
33
+ end
34
+
35
+ def destroy!
36
+ PointLight.point_lights.delete(self)
37
+ end
38
+
39
+ def update(delta_time)
40
+ @cached_light_space_matrices = nil if @cast_shadows
41
+ end
42
+
43
+ def position
44
+ game_object.local_to_world_coordinate(Vector[0, 0, 0])
45
+ end
46
+
47
+ def shadow_near
48
+ @range * 0.01
49
+ end
50
+
51
+ def shadow_far
52
+ @range * 2.0
53
+ end
54
+
55
+ def light_space_matrices
56
+ @cached_light_space_matrices ||= compute_light_space_matrices
57
+ end
58
+
59
+ def self.point_lights
60
+ @point_lights ||= []
61
+ end
62
+
63
+ def self.shadow_casting_lights
64
+ point_lights.select(&:cast_shadows).take(NR_SHADOW_CASTING_POINT_LIGHTS)
65
+ end
66
+
67
+ private
68
+
69
+ def compute_light_space_matrices
70
+ light_pos = position
71
+ proj = perspective(Math::PI / 2.0, 1.0, shadow_near, shadow_far)
72
+
73
+ CUBE_DIRECTIONS.map do |face|
74
+ target = light_pos + face[:dir]
75
+ view = look_at(light_pos, target, face[:up])
76
+ (proj * view).transpose
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class FontRenderer < FontRendererBase
5
+ def renderer?
6
+ true
7
+ end
8
+
9
+ private
10
+
11
+ def shader
12
+ @shader ||= Engine::Shader.text
13
+ end
14
+
15
+ def set_shader_camera_matrix
16
+ shader.set_mat4("camera", Engine::Camera.instance.matrix)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class FontRendererBase < Engine::Component
5
+ serialize :font, :string
6
+
7
+ attr_reader :mesh, :texture
8
+
9
+ def awake
10
+ # Original vertex order for ear-clipping, UVs flipped for Y-down camera
11
+ @mesh = Engine::PolygonMesh.new(
12
+ [Vector[-0.5, 0.5], Vector[0.5, 0.5], Vector[0.5, -0.5], Vector[-0.5, -0.5]],
13
+ [[0, 1], [1, 1], [1, 0], [0, 0]]
14
+ )
15
+ @texture = @font.texture.texture
16
+ end
17
+
18
+ def start
19
+ setup_vertex_attribute_buffer
20
+ setup_vertex_buffer
21
+ setup_index_buffer
22
+ Engine::GL.BindVertexArray(0)
23
+ end
24
+
25
+ def update_string(string)
26
+ @string = string
27
+ update_vbo_buf
28
+ end
29
+
30
+ def draw
31
+ shader.use
32
+ Engine::GL.BindVertexArray(@vao)
33
+ Engine::GL.BindBuffer(Engine::GL::ELEMENT_ARRAY_BUFFER, @ebo)
34
+
35
+ set_shader_per_frame_data
36
+
37
+ Engine::GL.DrawElementsInstanced(Engine::GL::TRIANGLES, mesh.index_data.length, Engine::GL::UNSIGNED_INT, 0, @string.length)
38
+ end
39
+
40
+ private
41
+
42
+ def shader
43
+ raise NotImplementedError, "Subclasses must implement #shader"
44
+ end
45
+
46
+ def set_shader_camera_matrix
47
+ raise NotImplementedError, "Subclasses must implement #set_shader_camera_matrix"
48
+ end
49
+
50
+ def set_shader_per_frame_data
51
+ set_shader_camera_matrix
52
+ set_shader_model_matrix
53
+ set_shader_texture
54
+ end
55
+
56
+ def set_shader_model_matrix
57
+ shader.set_mat4("model", game_object.model_matrix)
58
+ end
59
+
60
+ def set_shader_texture
61
+ Engine::Material.bind_texture(0, Engine::GL::TEXTURE_2D, texture)
62
+ shader.set_int("fontTexture", 0)
63
+ end
64
+
65
+ def setup_index_buffer
66
+ indices = mesh.index_data
67
+
68
+ ebo_buf = ' ' * 4
69
+ Engine::GL.GenBuffers(1, ebo_buf)
70
+ @ebo = ebo_buf.unpack('L')[0]
71
+ Engine::GL.BindBuffer(Engine::GL::ELEMENT_ARRAY_BUFFER, @ebo)
72
+ Engine::GL.BufferData(
73
+ Engine::GL::ELEMENT_ARRAY_BUFFER, indices.length * Fiddle::SIZEOF_INT,
74
+ indices.pack('I*'), Engine::GL::STATIC_DRAW
75
+ )
76
+ end
77
+
78
+ def setup_vertex_attribute_buffer
79
+ vao_buf = ' ' * 4
80
+ Engine::GL.GenVertexArrays(1, vao_buf)
81
+ @vao = vao_buf.unpack('L')[0]
82
+ Engine::GL.BindVertexArray(@vao)
83
+ end
84
+
85
+ def setup_vertex_buffer
86
+ vbo_buf = ' ' * 4
87
+ Engine::GL.GenBuffers(1, vbo_buf)
88
+ vbo = vbo_buf.unpack('L')[0]
89
+ points = mesh.vertex_data
90
+
91
+ Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, vbo)
92
+ Engine::GL.BufferData(
93
+ Engine::GL::ARRAY_BUFFER, @mesh.vertex_data.length * Fiddle::SIZEOF_FLOAT,
94
+ points.pack('F*'), Engine::GL::STATIC_DRAW
95
+ )
96
+
97
+ Engine::GL.VertexAttribPointer(0, 3, Engine::GL::FLOAT, Engine::GL::FALSE, 5 * Fiddle::SIZEOF_FLOAT, 0)
98
+ Engine::GL.VertexAttribPointer(1, 2, Engine::GL::FLOAT, Engine::GL::FALSE, 5 * Fiddle::SIZEOF_FLOAT, 3 * Fiddle::SIZEOF_FLOAT)
99
+ Engine::GL.EnableVertexAttribArray(0)
100
+ Engine::GL.EnableVertexAttribArray(1)
101
+
102
+ generate_instance_vbo_buf
103
+ end
104
+
105
+ def generate_instance_vbo_buf
106
+ @instance_vbo = set_instance_vbo_buf
107
+ update_vbo_buf
108
+ end
109
+
110
+ def set_instance_vbo_buf
111
+ instance_vbo_buf = ' ' * 4
112
+ Engine::GL.GenBuffers(1, instance_vbo_buf)
113
+ instance_vbo_buf.unpack('L')[0]
114
+ end
115
+
116
+ def update_vbo_buf
117
+ vertex_data = @font.vertex_data(@string)
118
+ string_length = @string.chars.reject { |c| c == "\n" }.length
119
+
120
+ Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, @instance_vbo)
121
+ vertex_size = Fiddle::SIZEOF_INT + (Fiddle::SIZEOF_FLOAT * 2)
122
+ Engine::GL.BufferData(
123
+ Engine::GL::ARRAY_BUFFER, string_length * vertex_size,
124
+ vertex_data.pack('IFF' * string_length), Engine::GL::STATIC_DRAW
125
+ )
126
+ Engine::GL.VertexAttribIPointer(2, 1, Engine::GL::INT, vertex_size, 0)
127
+ Engine::GL.VertexAttribPointer(3, 2, Engine::GL::FLOAT, Engine::GL::FALSE, vertex_size, Fiddle::SIZEOF_INT)
128
+ Engine::GL.EnableVertexAttribArray(2)
129
+ Engine::GL.EnableVertexAttribArray(3)
130
+ Engine::GL.VertexAttribDivisor(2, 1)
131
+ Engine::GL.VertexAttribDivisor(3, 1)
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class MeshRenderer < Engine::Component
5
+ serialize :mesh, :material, :static
6
+
7
+ attr_reader :mesh, :material, :static
8
+
9
+ def awake
10
+ @static = false if @static.nil?
11
+ @last_synced_version = nil
12
+ @renderer_key = nil
13
+ end
14
+
15
+ def renderer_key
16
+ @renderer_key ||= [mesh, material].freeze
17
+ end
18
+
19
+ def renderer?
20
+ true
21
+ end
22
+
23
+ def start
24
+ Rendering::RenderPipeline.add_instance(self)
25
+ end
26
+
27
+ def sync_transform
28
+ return if static
29
+
30
+ version = game_object.world_transform_version
31
+ return if @last_synced_version == version
32
+
33
+ @last_synced_version = version
34
+ Rendering::RenderPipeline.update_instance(self)
35
+ end
36
+
37
+ def destroy
38
+ Rendering::RenderPipeline.remove_instance(self)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class SpriteRenderer < Engine::Component
5
+ serialize :material
6
+
7
+ attr_reader :material
8
+
9
+ def colour=(value)
10
+ material.set_vec4("spriteColor", colour_to_vec4(value))
11
+ end
12
+
13
+ def colour_to_vec4(value)
14
+ if value.is_a?(Array)
15
+ value
16
+ else
17
+ [value[:r], value[:g], value[:b], value[:a] || 1.0]
18
+ end
19
+ end
20
+
21
+ def renderer?
22
+ true
23
+ end
24
+
25
+ def start
26
+ @mesh_renderer = MeshRenderer.create(mesh: Engine::Mesh.quad, material: material)
27
+ @mesh_renderer.set_game_object(game_object)
28
+ @mesh_renderer.start
29
+ set_default_frame_coords
30
+ end
31
+
32
+ def sync_transform
33
+ @mesh_renderer.sync_transform
34
+ end
35
+
36
+ def destroy
37
+ @mesh_renderer.destroy
38
+ end
39
+
40
+ private
41
+
42
+ def set_default_frame_coords
43
+ material.set_vec4("frameCoords", [0, 0, 1, 1])
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class SpotLight < Engine::Component
5
+ include Engine::MatrixHelpers
6
+
7
+ serialize :range, :colour, :inner_angle, :outer_angle, :cast_shadows
8
+
9
+ attr_accessor :range, :colour, :inner_angle, :outer_angle, :cast_shadows, :shadow_layer_index
10
+
11
+ def awake
12
+ @range ||= 300
13
+ @colour ||= [1.0, 1.0, 1.0]
14
+ @inner_angle ||= 12.5
15
+ @outer_angle ||= 17.5
16
+ @cast_shadows = false if @cast_shadows.nil?
17
+ @shadow_layer_index = nil
18
+ @cached_light_space_matrix = nil
19
+ end
20
+
21
+ def start
22
+ SpotLight.spot_lights << self
23
+ end
24
+
25
+ def destroy!
26
+ SpotLight.spot_lights.delete(self)
27
+ end
28
+
29
+ def inner_cutoff
30
+ Math.cos(@inner_angle * Math::PI / 180.0)
31
+ end
32
+
33
+ def outer_cutoff
34
+ Math.cos(@outer_angle * Math::PI / 180.0)
35
+ end
36
+
37
+ def shadow_near
38
+ @range * 0.01
39
+ end
40
+
41
+ def shadow_far
42
+ # Factor of 2 needed to match shadow range with spotlight attenuation range
43
+ @range * 2.0
44
+ end
45
+
46
+ def direction
47
+ game_object.local_to_world_direction(Vector[0, 0, 1]).normalize
48
+ end
49
+
50
+ def position
51
+ game_object.local_to_world_coordinate(Vector[0, 0, 0])
52
+ end
53
+
54
+ def light_space_matrix
55
+ @cached_light_space_matrix ||= compute_light_space_matrix
56
+ end
57
+
58
+ def update(delta_time)
59
+ # Clear cache each frame so matrix is recomputed if light moves
60
+ @cached_light_space_matrix = nil
61
+ end
62
+
63
+ def compute_light_space_matrix
64
+ light_pos = position
65
+ light_dir = direction
66
+ target = light_pos + light_dir
67
+
68
+ # Choose up vector that's not parallel to light direction
69
+ # When light points mostly along Y axis, use Z as up instead
70
+ up = if light_dir[1].abs > 0.9
71
+ Vector[0, 0, 1]
72
+ else
73
+ Vector[0, 1, 0]
74
+ end
75
+
76
+ view_matrix = look_at(light_pos, target, up)
77
+
78
+ # Perspective projection based on spotlight cone angle
79
+ fov = (@outer_angle * 2.0 + 5.0) * Math::PI / 180.0
80
+ # near/far ratio affects depth precision
81
+ proj_matrix = perspective(fov, 1.0, shadow_near, shadow_far)
82
+
83
+ (proj_matrix * view_matrix).transpose
84
+ end
85
+
86
+ def self.spot_lights
87
+ @spot_lights ||= []
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ class SpriteAnimator < Engine::Component
5
+ serialize :material, :frame_coords, :frame_rate, :loop
6
+
7
+ attr_reader :frame_rate, :loop
8
+
9
+ def awake
10
+ @frame_rate ||= 1
11
+ @loop = true if @loop.nil?
12
+ end
13
+
14
+ def start
15
+ @start_time = Time.now
16
+ update_frame
17
+ end
18
+
19
+ def update(delta_time)
20
+ update_frame
21
+ end
22
+
23
+ private
24
+
25
+ def update_frame
26
+ current_frame_index = ((Time.now - @start_time) * @frame_rate).to_i
27
+ current_frame_index = if @loop
28
+ current_frame_index % @frame_coords.length
29
+ else
30
+ [@frame_coords.length - 1, current_frame_index].min
31
+ end
32
+
33
+ frame = @frame_coords[current_frame_index]
34
+ @material.set_vec4("frameCoords", [
35
+ frame[:tl][0],
36
+ frame[:tl][1],
37
+ frame[:width],
38
+ frame[:height]
39
+ ])
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ module UI
5
+ module FlexLayout
6
+ class Base
7
+ def initialize(direction:, gap:)
8
+ @direction = direction
9
+ @gap = gap
10
+ end
11
+
12
+ def rect_for_child(child_ui_rect, index, children, parent_rect)
13
+ raise NotImplementedError
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :direction, :gap
19
+
20
+ def row?
21
+ @direction == :row
22
+ end
23
+
24
+ def main_axis_size(rect)
25
+ row? ? rect.width : rect.height
26
+ end
27
+
28
+ def total_gap(children)
29
+ @gap * (children.length - 1)
30
+ end
31
+
32
+ def build_rect(parent_rect, main_start:, main_size:, child_ui_rect: nil)
33
+ # Y-down coordinate system: both row and column increment main_start
34
+ if row?
35
+ # Cross-axis is vertical; use flex_height if specified, else stretch
36
+ cross_size = child_ui_rect&.flex_height
37
+ top, bottom = calculate_cross_axis_position(
38
+ parent_rect.top, parent_rect.bottom, cross_size, child_ui_rect&.flex_align
39
+ )
40
+
41
+ Engine::UI::Rect.new(
42
+ left: main_start,
43
+ right: main_start + main_size,
44
+ top: top,
45
+ bottom: bottom
46
+ )
47
+ else
48
+ # Cross-axis is horizontal; use flex_width if specified, else stretch
49
+ cross_size = child_ui_rect&.flex_width
50
+ left, right = calculate_cross_axis_position(
51
+ parent_rect.left, parent_rect.right, cross_size, child_ui_rect&.flex_align
52
+ )
53
+
54
+ Engine::UI::Rect.new(
55
+ left: left,
56
+ right: right,
57
+ top: main_start,
58
+ bottom: main_start + main_size
59
+ )
60
+ end
61
+ end
62
+
63
+ def calculate_cross_axis_position(cross_start, cross_end, cross_size, align)
64
+ # If no cross_size specified, stretch to fill
65
+ return [cross_start, cross_end] unless cross_size
66
+
67
+ align ||= :start
68
+ available = cross_end - cross_start
69
+
70
+ case align
71
+ when :start
72
+ [cross_start, cross_start + cross_size]
73
+ when :center
74
+ offset = (available - cross_size) / 2.0
75
+ [cross_start + offset, cross_start + offset + cross_size]
76
+ when :end
77
+ [cross_end - cross_size, cross_end]
78
+ else
79
+ [cross_start, cross_start + cross_size]
80
+ end
81
+ end
82
+
83
+ def main_axis_start(parent_rect)
84
+ row? ? parent_rect.left : parent_rect.top
85
+ end
86
+
87
+ def available_space(parent_rect, children)
88
+ size = row? ? parent_rect.width : parent_rect.height
89
+ size - total_gap(children)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ module UI
5
+ module FlexLayout
6
+ class Pack < Base
7
+ def initialize(direction:, gap:, justify:)
8
+ super(direction: direction, gap: gap)
9
+ @justify = justify
10
+ end
11
+
12
+ def rect_for_child(child_ui_rect, index, children, parent_rect)
13
+ sizes = children.map { |c| child_main_size(c) }
14
+ total_content = sizes.sum + total_gap(children)
15
+
16
+ available = row? ? parent_rect.width : parent_rect.height
17
+ start_offset = calculate_start_offset(available, total_content, children.length)
18
+
19
+ # Y-down: both row and column increment main_start
20
+ main_start = main_axis_start(parent_rect)
21
+ main_start += start_offset
22
+
23
+ children.each_with_index do |_, i|
24
+ break if i == index
25
+ main_start += sizes[i] + gap
26
+ end
27
+
28
+ build_rect(parent_rect, main_start: main_start, main_size: sizes[index], child_ui_rect: child_ui_rect)
29
+ end
30
+
31
+ private
32
+
33
+ def child_main_size(child_ui_rect)
34
+ size = row? ? child_ui_rect.flex_width : child_ui_rect.flex_height
35
+ unless size
36
+ property = row? ? "flex_width" : "flex_height"
37
+ raise "UI::Rect requires #{property} when parent Flex has justify: :#{@justify}"
38
+ end
39
+ size
40
+ end
41
+
42
+ def calculate_start_offset(available_space, total_content, child_count)
43
+ remaining = available_space - total_content
44
+
45
+ case @justify
46
+ when :start
47
+ 0
48
+ when :end
49
+ remaining
50
+ when :center
51
+ remaining / 2.0
52
+ when :space_between
53
+ 0
54
+ when :space_around
55
+ remaining / (child_count * 2.0)
56
+ when :space_evenly
57
+ remaining / (child_count + 1.0)
58
+ else
59
+ 0
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine::Components
4
+ module UI
5
+ module FlexLayout
6
+ class Stretch < Base
7
+ def rect_for_child(child_ui_rect, index, children, parent_rect)
8
+ sizes = calculate_sizes(children, parent_rect)
9
+
10
+ # Y-down: both row and column increment main_start
11
+ main_start = main_axis_start(parent_rect)
12
+ children.each_with_index do |_, i|
13
+ break if i == index
14
+ main_start += sizes[i] + gap
15
+ end
16
+
17
+ build_rect(parent_rect, main_start: main_start, main_size: sizes[index], child_ui_rect: child_ui_rect)
18
+ end
19
+
20
+ private
21
+
22
+ def calculate_sizes(children, parent_rect)
23
+ available = available_space(parent_rect, children)
24
+
25
+ fixed_total = 0
26
+ total_weight = 0
27
+
28
+ children.each do |child|
29
+ fixed_size = row? ? child.flex_width : child.flex_height
30
+ if fixed_size
31
+ fixed_total += fixed_size
32
+ else
33
+ total_weight += child.flex_weight || 1
34
+ end
35
+ end
36
+
37
+ remaining = available - fixed_total
38
+ per_weight = total_weight > 0 ? remaining / total_weight.to_f : 0
39
+
40
+ children.map do |child|
41
+ fixed_size = row? ? child.flex_width : child.flex_height
42
+ if fixed_size
43
+ fixed_size
44
+ else
45
+ (child.flex_weight || 1) * per_weight
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end