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