ruby_rpg 0.0.4 → 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.
- checksums.yaml +4 -4
- data/README.md +22 -0
- data/bin/build.bash +1 -1
- data/bin/import +11 -1
- data/ext/gl_native/extconf.rb +20 -0
- data/ext/gl_native/gl_native.c +563 -0
- data/ext/glfw_native/extconf.rb +18 -0
- data/ext/glfw_native/glfw_native.c +451 -0
- data/lib/engine/assets/_imported/cube.index_data +36 -0
- data/lib/engine/assets/_imported/cube.vertex_data +720 -0
- data/lib/engine/assets/_imported/plane.index_data +6 -0
- data/lib/engine/assets/_imported/plane.vertex_data +120 -0
- data/lib/engine/assets/_imported/sphere.index_data +2880 -0
- data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
- data/lib/engine/assets/cube.obj +46 -0
- data/lib/engine/assets/plane.obj +16 -0
- data/lib/engine/assets/sphere.obj +2488 -0
- data/lib/engine/component.rb +2 -0
- data/lib/engine/components/audio_source.rb +6 -4
- data/lib/engine/components/direction_light.rb +83 -4
- data/lib/engine/components/orthographic_camera.rb +31 -25
- data/lib/engine/components/perspective_camera.rb +35 -12
- data/lib/engine/components/point_light.rb +61 -5
- data/lib/engine/components/renderers/font_renderer.rb +19 -0
- data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
- data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
- data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
- data/lib/engine/components/spot_light.rb +90 -0
- data/lib/engine/components/sprite_animator.rb +42 -0
- data/lib/engine/components/ui/flex/layout.rb +94 -0
- data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
- data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
- data/lib/engine/components/ui/flex.rb +60 -0
- data/lib/engine/components/ui/font_renderer.rb +57 -0
- data/lib/engine/components/ui/rect.rb +117 -0
- data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
- data/lib/engine/components/ui/sprite_renderer.rb +117 -0
- data/lib/engine/compute_shader.rb +14 -0
- data/lib/engine/compute_texture.rb +13 -0
- data/lib/engine/debugging.rb +4 -4
- data/lib/engine/engine.rb +8 -12
- data/lib/engine/font.rb +29 -4
- data/lib/engine/game_object.rb +121 -49
- data/lib/engine/gl.rb +439 -0
- data/lib/engine/glfw.rb +151 -0
- data/lib/engine/input.rb +115 -7
- data/lib/engine/material.rb +146 -11
- data/lib/engine/matrix_helpers.rb +38 -0
- data/lib/engine/mesh.rb +41 -16
- data/lib/engine/metal/compute_shader.rb +118 -0
- data/lib/engine/metal/compute_texture.rb +176 -0
- data/lib/engine/metal/device.rb +98 -0
- data/lib/engine/metal/metal_bindings.rb +126 -0
- data/lib/engine/opengl/compute_shader.rb +77 -0
- data/lib/engine/opengl/compute_texture.rb +31 -0
- data/lib/engine/physics/components/rigidbody.rb +23 -20
- data/lib/engine/physics/components/sphere_collider.rb +13 -3
- data/lib/engine/physics/physics_resolver.rb +24 -12
- data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
- data/lib/engine/rendering/gpu_timer.rb +68 -0
- data/lib/engine/rendering/instance_renderer.rb +140 -61
- data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
- data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
- data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
- data/lib/engine/rendering/post_processing/effect.rb +11 -0
- data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
- data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
- data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
- data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
- data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
- data/lib/engine/rendering/render_pipeline.rb +238 -6
- data/lib/engine/rendering/render_texture.rb +118 -0
- data/lib/engine/rendering/screen_quad.rb +64 -0
- data/lib/engine/rendering/shadow_map_array.rb +72 -0
- data/lib/engine/rendering/skybox_cubemap.rb +119 -0
- data/lib/engine/rendering/skybox_renderer.rb +64 -0
- data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
- data/lib/engine/screenshoter.rb +1 -1
- data/lib/engine/serialization/graph_serializer.rb +74 -0
- data/lib/engine/serialization/object_serializer.rb +98 -0
- data/lib/engine/serialization/serializable.rb +78 -0
- data/lib/engine/serialization/yaml_persistence.rb +45 -0
- data/lib/engine/shader.rb +149 -25
- data/lib/engine/shaders/colour_frag.glsl +9 -1
- data/lib/engine/shaders/colour_vertex.glsl +12 -5
- data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
- data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
- data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
- data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +3 -2
- data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
- data/lib/engine/shaders/lighting/lighting.glsl +33 -0
- data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
- data/lib/engine/shaders/lighting/point_light.glsl +46 -0
- data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
- data/lib/engine/shaders/mesh_frag.glsl +28 -77
- data/lib/engine/shaders/mesh_vertex.glsl +5 -5
- data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
- data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
- data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
- data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
- data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
- data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
- data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
- data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
- data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
- data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
- data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
- data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
- data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
- data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
- data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
- data/lib/engine/shaders/shadow_frag.glsl +6 -0
- data/lib/engine/shaders/shadow_vertex.glsl +11 -0
- data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
- data/lib/engine/shaders/vertex_lit_frag.glsl +10 -66
- data/lib/engine/shaders/vertex_lit_vertex.glsl +1 -1
- data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
- data/lib/engine/standard_objects/cube.rb +23 -0
- data/lib/engine/standard_objects/default_material.rb +20 -0
- data/lib/engine/standard_objects/plane.rb +23 -0
- data/lib/engine/standard_objects/sphere.rb +23 -0
- data/lib/engine/texture.rb +28 -19
- data/lib/engine/ui/rect.rb +16 -0
- data/lib/engine/window.rb +2 -2
- data/lib/ruby_rpg.rb +69 -9
- data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
- data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
- data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
- data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
- metadata +124 -466
- data/glfw-3.3.9.bin.MACOS/README.md +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
- data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
- data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
- data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
- data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
- data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
- data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
- data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
- data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
- data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
- data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
- data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
- data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
- data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
- data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
- data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
- data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
- data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
- data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
- data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
- data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
- data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
- data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
- data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
- data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
- data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
- data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
- data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
- data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
- data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
- data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
- data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
- data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
- data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
- data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
- data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
- data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
- data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
- data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
- data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
- data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
- data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
- data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
- data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
- data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
- data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
- data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
- data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
- data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
- data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
- data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
- data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
- data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
- data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
- data/glfw-3.4.bin.WIN64/README.md +0 -70
- data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
- data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
- data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
- data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
- data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
- data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
- data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
- data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
- data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
- data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
- data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
- data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
- data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
- data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
- data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
- data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
- data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
- data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
- data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
- data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
- data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
- data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
- data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
- data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
- data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
- data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
- data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
- data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
- data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
- data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
- data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
- data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
- data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
- data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
- data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
- data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
- data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
- data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
- data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
- data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
- data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
- data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
- data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
- data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
- data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
- data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
- data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
- data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
- data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
- data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
- data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
- data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
- data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
- data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
- data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
- data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
- data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
- data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
- data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
- data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
- data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
- data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
- data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
- data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
- data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
- data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
- data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
- data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
- data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
- data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
- data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
- data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
- data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
- data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
- data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
- data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
- data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
- data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
- data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
- data/lib/engine/components/font_renderer.rb +0 -134
- data/lib/engine/components/mesh_renderer.rb +0 -31
- data/lib/engine/components/sprite_renderer.rb +0 -141
- data/lib/engine/components/ui_font_renderer.rb +0 -140
- data/lib/engine/components/ui_sprite_renderer.rb +0 -101
- data/lib/engine/shaders/skybox_frag.glsl +0 -12
- /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
- /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
- /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +0 -0
- /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
|
+
}
|