raylib-bindings 0.1.4 → 0.2.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/ChangeLog +10 -0
- data/LICENSE.txt +1 -1
- data/README.md +16 -5
- data/examples/template.rb +24 -22
- data/lib/config.rb +98 -0
- data/lib/physac.rb +6 -8
- data/lib/raygui.rb +56 -9
- data/lib/raylib.rb +27 -146
- data/lib/raylib_helper.rb +419 -0
- data/lib/raylib_main.rb +68 -21
- data/lib/raymath.rb +115 -119
- data/lib/rlgl.rb +47 -25
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec140a3aeb14467dddc0851eb6dc9b26f1e189955eda32aede4cdb9068163d2a
|
4
|
+
data.tar.gz: 9edeefc3c423bb8436b9d0a3779c86abe584a0c719090a8819dd8489689079db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f46201e5a1c794a319ccae7008220e092837aa860040710d9ba41ff5836bf81c179d48ba72994cf863ce9dce393134d1218e237b76c4f414de6422ddd19bf19
|
7
|
+
data.tar.gz: 349f290348f0fe2ac8690dd2bf712a2d1a41f979f4c95e4ca5a1cf7d85dcdd278714688aa359112a845960549870d0deb4775ef88642c4e567b1999966c515ce
|
data/ChangeLog
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
2022-12-30 vaiorabbit <http://twitter.com/vaiorabbit>
|
2
|
+
|
3
|
+
* generator: Now generates binding code for config.h
|
4
|
+
|
5
|
+
2022-12-29 vaiorabbit <http://twitter.com/vaiorabbit>
|
6
|
+
|
7
|
+
* generator: Now generates enum descriptions
|
8
|
+
* Fixed several codes according to Rubocop warnings
|
9
|
+
* lib/raylib_helper.rb: Added several helper functions/classes
|
10
|
+
|
1
11
|
2022-12-25 vaiorabbit <http://twitter.com/vaiorabbit>
|
2
12
|
|
3
13
|
* Converted DrawModelEx into a wrapper function of rbDrawModelEx to avoid Matrix problem found in models_animation sample
|
data/LICENSE.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
Ruby-raylib : Yet another raylib wrapper for Ruby
|
2
|
-
Copyright (c) 2021-
|
2
|
+
Copyright (c) 2021-2023 vaiorabbit <http://twitter.com/vaiorabbit>
|
3
3
|
|
4
4
|
This software is provided 'as-is', without any express or implied
|
5
5
|
warranty. In no event will the authors be held liable for any damages
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# Yet another raylib wrapper for Ruby #
|
4
4
|
|
5
5
|
* Created : 2021-10-17
|
6
|
-
* Last modified : 2022-12-
|
6
|
+
* Last modified : 2022-12-31
|
7
7
|
|
8
8
|
Provides Ruby bindings for raylib-related libraries including:
|
9
9
|
|
@@ -45,9 +45,9 @@ D:\> ruby template.rb
|
|
45
45
|
* Ruby interpreter
|
46
46
|
* Tested on:
|
47
47
|
* [macOS]
|
48
|
-
* ruby 3.
|
48
|
+
* ruby 3.2.0 (2022-12-25 revision a528908271) [arm64-darwin21]
|
49
49
|
* [Windows] https://rubyinstaller.org/downloads/ Ruby+Devkit
|
50
|
-
* ruby 3.
|
50
|
+
* ruby 3.2.0 (2022-12-25 revision a528908271) [x64-mingw-ucrt]
|
51
51
|
|
52
52
|
* If you need to build DLLs/shared libralies for your own runtime envrioenment (Linux, etc.):
|
53
53
|
* CMake https://cmake.org/download/
|
@@ -63,7 +63,7 @@ D:\> ruby template.rb
|
|
63
63
|
|
64
64
|
* [Windows] gcc
|
65
65
|
|
66
|
-
gcc (
|
66
|
+
gcc (Rev7, Built by MSYS2 project) 12.2.0
|
67
67
|
|
68
68
|
|
69
69
|
<details>
|
@@ -72,9 +72,11 @@ D:\> ruby template.rb
|
|
72
72
|
* Ruby interpreter
|
73
73
|
* Tested on:
|
74
74
|
* [macOS]
|
75
|
+
* ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]
|
75
76
|
* ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin20]
|
76
77
|
* ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
|
77
78
|
* [Windows] https://rubyinstaller.org/downloads/ Ruby+Devkit
|
79
|
+
* ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
|
78
80
|
* ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x64-mingw-ucrt]
|
79
81
|
* ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32]
|
80
82
|
|
@@ -96,9 +98,18 @@ D:\> ruby template.rb
|
|
96
98
|
* [Windows] gcc
|
97
99
|
|
98
100
|
gcc (Rev9, Built by MSYS2 project) 11.2.0
|
101
|
+
gcc (Rev10, Built by MSYS2 project) 11.2.0
|
99
102
|
|
100
103
|
</details>
|
101
104
|
|
105
|
+
## Project ##
|
106
|
+
|
107
|
+
See the project below to learn how to use this library:
|
108
|
+
|
109
|
+
* Whac-a-Mole! : Ruby raylib bindings demo
|
110
|
+
* <img src="https://raw.githubusercontent.com/vaiorabbit/raylib-bindings-whacamole/main/doc/screenshot_00.png" width="300"> <img src="https://raw.githubusercontent.com/vaiorabbit/raylib-bindings-whacamole/main/doc/screenshot_01.png" width="300">
|
111
|
+
* <https://github.com/vaiorabbit/raylib-bindings-whacamole>
|
112
|
+
|
102
113
|
## Limitation ##
|
103
114
|
|
104
115
|
* `SetTraceLogCallback` and `TraceLogCallback` are unusable since Ruby-FFI does not support `:varargs` parameter in callbacks (`Proc`, etc.)
|
@@ -121,7 +132,7 @@ Shared libraries in `lib` directory are built on top of these products and are a
|
|
121
132
|
All ruby codes here are available under the terms of the zlib/libpng License ( http://opensource.org/licenses/Zlib ).
|
122
133
|
|
123
134
|
Ruby-raylib : Yet another raylib wrapper for Ruby
|
124
|
-
Copyright (c) 2021-
|
135
|
+
Copyright (c) 2021-2023 vaiorabbit <http://twitter.com/vaiorabbit>
|
125
136
|
|
126
137
|
This software is provided 'as-is', without any express or implied
|
127
138
|
warranty. In no event will the authors be held liable for any damages
|
data/examples/template.rb
CHANGED
@@ -20,6 +20,8 @@ when /mswin|msys|mingw|cygwin/
|
|
20
20
|
Raylib.load_lib(shared_lib_path + 'libraylib.dll', raygui_libpath: shared_lib_path + 'raygui.dll', physac_libpath: shared_lib_path + 'physac.dll')
|
21
21
|
when /darwin/
|
22
22
|
Raylib.load_lib(shared_lib_path + 'libraylib.dylib', raygui_libpath: shared_lib_path + 'raygui.dylib', physac_libpath: shared_lib_path + 'physac.dylib')
|
23
|
+
when /linux/
|
24
|
+
Raylib.load_lib(shared_lib_path + 'libraylib.so', raygui_libpath: shared_lib_path + 'raygui.so', physac_libpath: shared_lib_path + 'physac.so')
|
23
25
|
else
|
24
26
|
raise RuntimeError, "Unknown OS: #{RUBY_PLATFORM}"
|
25
27
|
end
|
@@ -37,11 +39,11 @@ if __FILE__ == $PROGRAM_NAME
|
|
37
39
|
# Camera
|
38
40
|
camera = Camera.new
|
39
41
|
reset_camera = lambda {
|
40
|
-
camera
|
41
|
-
camera
|
42
|
-
camera
|
43
|
-
camera
|
44
|
-
camera
|
42
|
+
camera.position.set(0.0, 10.0, 10.0)
|
43
|
+
camera.target.set(0.0, 0.0, 0.0)
|
44
|
+
camera.up.set(0.0, 1.0, 0.0)
|
45
|
+
camera.fovy = 45.0
|
46
|
+
camera.projection = CAMERA_PERSPECTIVE
|
45
47
|
}
|
46
48
|
reset_camera.call
|
47
49
|
SetCameraMode(camera, CAMERA_FREE)
|
@@ -76,29 +78,29 @@ if __FILE__ == $PROGRAM_NAME
|
|
76
78
|
move[:z] += speed if IsKeyDown(KEY_DOWN)
|
77
79
|
move[:z] -= speed if IsKeyDown(KEY_UP)
|
78
80
|
|
79
|
-
to_camera = Vector3Normalize(Vector3.create(camera
|
81
|
+
to_camera = Vector3Normalize(Vector3.create(camera.position.x, 0, camera.position.z))
|
80
82
|
rotate_y = QuaternionFromVector3ToVector3(Vector3.create(0, 0, 1), to_camera)
|
81
83
|
move = Vector3RotateByQuaternion(move, rotate_y)
|
82
84
|
|
83
85
|
player_pos = Vector3Add(player_pos, move)
|
84
|
-
player_screen_pos = GetWorldToScreen(Vector3.create(player_pos
|
86
|
+
player_screen_pos = GetWorldToScreen(Vector3.create(player_pos.x, player_pos.y + 2.5, player_pos.z), camera)
|
85
87
|
|
86
88
|
# Check collision status
|
87
89
|
collision = false
|
88
90
|
|
89
|
-
player_bbox = BoundingBox.create(player_pos
|
90
|
-
player_pos
|
91
|
-
player_pos
|
92
|
-
player_pos
|
93
|
-
player_pos
|
94
|
-
player_pos
|
91
|
+
player_bbox = BoundingBox.create(player_pos.x - player_size.x/2,
|
92
|
+
player_pos.y - player_size.y/2,
|
93
|
+
player_pos.z - player_size.z/2,
|
94
|
+
player_pos.x + player_size.x/2,
|
95
|
+
player_pos.y + player_size.y/2,
|
96
|
+
player_pos.z + player_size.z/2)
|
95
97
|
|
96
|
-
obstacle_cube_bbox = BoundingBox.create(obstacle_cube_pos
|
97
|
-
obstacle_cube_pos
|
98
|
-
obstacle_cube_pos
|
99
|
-
obstacle_cube_pos
|
100
|
-
obstacle_cube_pos
|
101
|
-
obstacle_cube_pos
|
98
|
+
obstacle_cube_bbox = BoundingBox.create(obstacle_cube_pos.x - obstacle_cube_size.x/2,
|
99
|
+
obstacle_cube_pos.y - obstacle_cube_size.y/2,
|
100
|
+
obstacle_cube_pos.z - obstacle_cube_size.z/2,
|
101
|
+
obstacle_cube_pos.x + obstacle_cube_size.x/2,
|
102
|
+
obstacle_cube_pos.y + obstacle_cube_size.y/2,
|
103
|
+
obstacle_cube_pos.z + obstacle_cube_size.z/2)
|
102
104
|
|
103
105
|
# Check collisions player vs obstacle_cube
|
104
106
|
collision = true if CheckCollisionBoxes(player_bbox, obstacle_cube_bbox)
|
@@ -118,8 +120,8 @@ if __FILE__ == $PROGRAM_NAME
|
|
118
120
|
DrawCube(player_pos, 2.0, 2.0, 2.0, collision ? Fade(ruby_red, 0.25) : ruby_red)
|
119
121
|
DrawCubeWires(player_pos, 2.0, 2.0, 2.0, MAROON)
|
120
122
|
# Obstacle cube
|
121
|
-
DrawCube(obstacle_cube_pos, obstacle_cube_size
|
122
|
-
DrawCubeWires(obstacle_cube_pos, obstacle_cube_size
|
123
|
+
DrawCube(obstacle_cube_pos, obstacle_cube_size.x, obstacle_cube_size.y, obstacle_cube_size.z, GRAY)
|
124
|
+
DrawCubeWires(obstacle_cube_pos, obstacle_cube_size.x, obstacle_cube_size.y, obstacle_cube_size.z, DARKGRAY)
|
123
125
|
# Obstacle sphere
|
124
126
|
DrawSphere(obstacle_sphere_pos, obstacle_sphere_size, GRAY)
|
125
127
|
DrawSphereWires(obstacle_sphere_pos, obstacle_sphere_size, 16, 16, DARKGRAY)
|
@@ -129,7 +131,7 @@ if __FILE__ == $PROGRAM_NAME
|
|
129
131
|
|
130
132
|
## HUD
|
131
133
|
# Text over the red cube
|
132
|
-
DrawText("Player HP: 100 / 100", player_screen_pos
|
134
|
+
DrawText("Player HP: 100 / 100", player_screen_pos.x - MeasureText("Player HP: 100/100", 20)/2, player_screen_pos.y, 20, BLACK)
|
133
135
|
# Help message
|
134
136
|
DrawRectangle(10, screen_height - 100, 300, 80, Fade(MAROON, 0.25))
|
135
137
|
DrawRectangleLines(10, screen_height - 100, 300, 80, ruby_red)
|
data/lib/config.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# Yet another raylib wrapper for Ruby
|
2
|
+
#
|
3
|
+
# * https://github.com/vaiorabbit/raylib-bindings
|
4
|
+
#
|
5
|
+
# [NOTICE] Autogenerated. Do not edit.
|
6
|
+
|
7
|
+
require 'ffi'
|
8
|
+
|
9
|
+
module Raylib
|
10
|
+
extend FFI::Library
|
11
|
+
|
12
|
+
# Define/Macro
|
13
|
+
|
14
|
+
SUPPORT_MODULE_RSHAPES = 1
|
15
|
+
SUPPORT_MODULE_RTEXTURES = 1
|
16
|
+
SUPPORT_MODULE_RTEXT = 1 # WARNING: It requires SUPPORT_MODULE_RTEXTURES to load sprite font textures
|
17
|
+
SUPPORT_MODULE_RMODELS = 1
|
18
|
+
SUPPORT_MODULE_RAUDIO = 1
|
19
|
+
SUPPORT_CAMERA_SYSTEM = 1
|
20
|
+
SUPPORT_GESTURES_SYSTEM = 1
|
21
|
+
SUPPORT_MOUSE_GESTURES = 1
|
22
|
+
SUPPORT_SSH_KEYBOARD_RPI = 1
|
23
|
+
SUPPORT_WINMM_HIGHRES_TIMER = 1
|
24
|
+
SUPPORT_PARTIALBUSY_WAIT_LOOP = 1
|
25
|
+
SUPPORT_SCREEN_CAPTURE = 1
|
26
|
+
SUPPORT_GIF_RECORDING = 1
|
27
|
+
SUPPORT_COMPRESSION_API = 1
|
28
|
+
MAX_FILEPATH_CAPACITY = 8192 # Maximum file paths capacity
|
29
|
+
MAX_FILEPATH_LENGTH = 4096 # Maximum length for filepaths (Linux PATH_MAX default value)
|
30
|
+
MAX_KEYBOARD_KEYS = 512 # Maximum number of keyboard keys supported
|
31
|
+
MAX_MOUSE_BUTTONS = 8 # Maximum number of mouse buttons supported
|
32
|
+
MAX_GAMEPADS = 4 # Maximum number of gamepads supported
|
33
|
+
MAX_GAMEPAD_AXIS = 8 # Maximum number of axis supported (per gamepad)
|
34
|
+
MAX_GAMEPAD_BUTTONS = 32 # Maximum number of buttons supported (per gamepad)
|
35
|
+
MAX_TOUCH_POINTS = 8 # Maximum number of touch points supported
|
36
|
+
MAX_KEY_PRESSED_QUEUE = 16 # Maximum number of keys in the key input queue
|
37
|
+
MAX_CHAR_PRESSED_QUEUE = 16 # Maximum number of characters in the char input queue
|
38
|
+
MAX_DECOMPRESSION_SIZE = 64 # Max size allocated for decompression in MB
|
39
|
+
RL_DEFAULT_BATCH_BUFFERS = 1 # Default number of batch buffers (multi-buffering)
|
40
|
+
RL_DEFAULT_BATCH_DRAWCALLS = 256 # Default number of batch draw calls (by state changes: mode, texture)
|
41
|
+
RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS = 4 # Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
|
42
|
+
RL_MAX_MATRIX_STACK_SIZE = 32 # Maximum size of internal Matrix stack
|
43
|
+
RL_MAX_SHADER_LOCATIONS = 32 # Maximum number of shader locations supported
|
44
|
+
RL_CULL_DISTANCE_NEAR = 0.01 # Default projection matrix near cull distance
|
45
|
+
RL_CULL_DISTANCE_FAR = 1000.0 # Default projection matrix far cull distance
|
46
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION = "vertexPosition" # Binded by default to shader location: 0
|
47
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD = "vertexTexCoord" # Binded by default to shader location: 1
|
48
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL = "vertexNormal" # Binded by default to shader location: 2
|
49
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR = "vertexColor" # Binded by default to shader location: 3
|
50
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT = "vertexTangent" # Binded by default to shader location: 4
|
51
|
+
RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 = "vertexTexCoord2" # Binded by default to shader location: 5
|
52
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_MVP = "mvp" # model-view-projection matrix
|
53
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW = "matView" # view matrix
|
54
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION = "matProjection" # projection matrix
|
55
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL = "matModel" # model matrix
|
56
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL = "matNormal" # normal matrix (transpose(inverse(matModelView))
|
57
|
+
RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR = "colDiffuse" # color diffuse (base tint color, multiplied by texture color)
|
58
|
+
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 = "texture0" # texture0 (texture slot active 0)
|
59
|
+
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 = "texture1" # texture1 (texture slot active 1)
|
60
|
+
RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 = "texture2" # texture2 (texture slot active 2)
|
61
|
+
SUPPORT_QUADS_DRAW_MODE = 1
|
62
|
+
SUPPORT_FILEFORMAT_PNG = 1
|
63
|
+
SUPPORT_FILEFORMAT_GIF = 1
|
64
|
+
SUPPORT_FILEFORMAT_QOI = 1
|
65
|
+
SUPPORT_FILEFORMAT_DDS = 1
|
66
|
+
SUPPORT_FILEFORMAT_HDR = 1
|
67
|
+
SUPPORT_IMAGE_EXPORT = 1
|
68
|
+
SUPPORT_IMAGE_GENERATION = 1
|
69
|
+
SUPPORT_IMAGE_MANIPULATION = 1
|
70
|
+
SUPPORT_DEFAULT_FONT = 1
|
71
|
+
SUPPORT_FILEFORMAT_FNT = 1
|
72
|
+
SUPPORT_FILEFORMAT_TTF = 1
|
73
|
+
SUPPORT_TEXT_MANIPULATION = 1
|
74
|
+
MAX_TEXT_BUFFER_LENGTH = 1024 # Size of internal static buffers used on some functions:
|
75
|
+
MAX_TEXTSPLIT_COUNT = 128 # Maximum number of substrings to split: TextSplit()
|
76
|
+
SUPPORT_FILEFORMAT_OBJ = 1
|
77
|
+
SUPPORT_FILEFORMAT_MTL = 1
|
78
|
+
SUPPORT_FILEFORMAT_IQM = 1
|
79
|
+
SUPPORT_FILEFORMAT_GLTF = 1
|
80
|
+
SUPPORT_FILEFORMAT_VOX = 1
|
81
|
+
SUPPORT_FILEFORMAT_M3D = 1
|
82
|
+
SUPPORT_MESH_GENERATION = 1
|
83
|
+
MAX_MATERIAL_MAPS = 12 # Maximum number of shader maps supported
|
84
|
+
MAX_MESH_VERTEX_BUFFERS = 7 # Maximum vertex buffers (VBO) per mesh
|
85
|
+
SUPPORT_FILEFORMAT_WAV = 1
|
86
|
+
SUPPORT_FILEFORMAT_OGG = 1
|
87
|
+
SUPPORT_FILEFORMAT_XM = 1
|
88
|
+
SUPPORT_FILEFORMAT_MOD = 1
|
89
|
+
SUPPORT_FILEFORMAT_MP3 = 1
|
90
|
+
AUDIO_DEVICE_FORMAT = "ma_format_f32" # Device output format (miniaudio: float-32bit)
|
91
|
+
AUDIO_DEVICE_CHANNELS = 2 # Device output channels: stereo
|
92
|
+
AUDIO_DEVICE_SAMPLE_RATE = 0 # Device sample rate (device default)
|
93
|
+
MAX_AUDIO_BUFFER_POOL_CHANNELS = 16 # Maximum number of audio pool channels
|
94
|
+
SUPPORT_STANDARD_FILEIO = 1
|
95
|
+
SUPPORT_TRACELOG = 1
|
96
|
+
MAX_TRACELOG_MSG_LENGTH = 128 # Max length of one trace-log message
|
97
|
+
|
98
|
+
end
|
data/lib/physac.rb
CHANGED
@@ -22,9 +22,11 @@ module Raylib
|
|
22
22
|
|
23
23
|
# Enum
|
24
24
|
|
25
|
+
# enum PhysicsShapeType
|
25
26
|
PHYSICS_CIRCLE = 0
|
26
27
|
PHYSICS_POLYGON = 1
|
27
28
|
|
29
|
+
|
28
30
|
# Typedef
|
29
31
|
|
30
32
|
typedef :int, :PhysicsShapeType
|
@@ -103,7 +105,7 @@ module Raylib
|
|
103
105
|
|
104
106
|
# Function
|
105
107
|
|
106
|
-
def self.setup_physac_symbols
|
108
|
+
def self.setup_physac_symbols
|
107
109
|
entries = [
|
108
110
|
|
109
111
|
# InitPhysics : Initializes physics system
|
@@ -212,13 +214,9 @@ module Raylib
|
|
212
214
|
[:GetPhysicsShapeVertex, :GetPhysicsShapeVertex, [:pointer, :int], Vector2.by_value],
|
213
215
|
]
|
214
216
|
entries.each do |entry|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
$stderr.puts("[Warning] Failed to import #{entry[0]} (#{error}).") if output_error
|
219
|
-
end
|
217
|
+
attach_function entry[0], entry[1], entry[2], entry[3]
|
218
|
+
rescue FFI::NotFoundError => e
|
219
|
+
warn "[Warning] Failed to import #{entry[0]} (#{e})."
|
220
220
|
end
|
221
221
|
end
|
222
|
-
|
223
222
|
end
|
224
|
-
|
data/lib/raygui.rb
CHANGED
@@ -17,13 +17,21 @@ module Raylib
|
|
17
17
|
|
18
18
|
# Enum
|
19
19
|
|
20
|
+
# enum GuiState
|
21
|
+
# Gui control state
|
20
22
|
STATE_NORMAL = 0
|
21
23
|
STATE_FOCUSED = 1
|
22
24
|
STATE_PRESSED = 2
|
23
25
|
STATE_DISABLED = 3
|
26
|
+
|
27
|
+
# enum GuiTextAlignment
|
28
|
+
# Gui control text alignment
|
24
29
|
TEXT_ALIGN_LEFT = 0
|
25
30
|
TEXT_ALIGN_CENTER = 1
|
26
31
|
TEXT_ALIGN_RIGHT = 2
|
32
|
+
|
33
|
+
# enum GuiControl
|
34
|
+
# Gui controls
|
27
35
|
DEFAULT = 0
|
28
36
|
LABEL = 1 # Used also for: LABELBUTTON
|
29
37
|
BUTTON = 2
|
@@ -40,6 +48,9 @@ module Raylib
|
|
40
48
|
COLORPICKER = 13
|
41
49
|
SCROLLBAR = 14
|
42
50
|
STATUSBAR = 15
|
51
|
+
|
52
|
+
# enum GuiControlProperty
|
53
|
+
# Gui base properties for every control
|
43
54
|
BORDER_COLOR_NORMAL = 0
|
44
55
|
BASE_COLOR_NORMAL = 1
|
45
56
|
TEXT_COLOR_NORMAL = 2
|
@@ -56,38 +67,77 @@ module Raylib
|
|
56
67
|
TEXT_PADDING = 13
|
57
68
|
TEXT_ALIGNMENT = 14
|
58
69
|
RESERVED = 15
|
70
|
+
|
71
|
+
# enum GuiDefaultProperty
|
72
|
+
# DEFAULT extended properties
|
59
73
|
TEXT_SIZE = 16 # Text size (glyphs max height)
|
60
74
|
TEXT_SPACING = 17 # Text spacing between glyphs
|
61
75
|
LINE_COLOR = 18 # Line control color
|
62
76
|
BACKGROUND_COLOR = 19 # Background color
|
77
|
+
|
78
|
+
# enum GuiToggleProperty
|
79
|
+
# Toggle/ToggleGroup
|
63
80
|
GROUP_PADDING = 16 # ToggleGroup separation between toggles
|
81
|
+
|
82
|
+
# enum GuiSliderProperty
|
83
|
+
# Slider/SliderBar
|
64
84
|
SLIDER_WIDTH = 16 # Slider size of internal bar
|
65
85
|
SLIDER_PADDING = 17 # Slider/SliderBar internal bar padding
|
86
|
+
|
87
|
+
# enum GuiProgressBarProperty
|
88
|
+
# ProgressBar
|
66
89
|
PROGRESS_PADDING = 16 # ProgressBar internal padding
|
90
|
+
|
91
|
+
# enum GuiScrollBarProperty
|
92
|
+
# ScrollBar
|
67
93
|
ARROWS_SIZE = 16
|
68
94
|
ARROWS_VISIBLE = 17
|
69
95
|
SCROLL_SLIDER_PADDING = 18 # (SLIDERBAR, SLIDER_PADDING)
|
70
96
|
SCROLL_SLIDER_SIZE = 19
|
71
97
|
SCROLL_PADDING = 20
|
72
98
|
SCROLL_SPEED = 21
|
99
|
+
|
100
|
+
# enum GuiCheckBoxProperty
|
101
|
+
# CheckBox
|
73
102
|
CHECK_PADDING = 16 # CheckBox internal check padding
|
103
|
+
|
104
|
+
# enum GuiComboBoxProperty
|
105
|
+
# ComboBox
|
74
106
|
COMBO_BUTTON_WIDTH = 16 # ComboBox right button width
|
75
107
|
COMBO_BUTTON_SPACING = 17 # ComboBox button separation
|
108
|
+
|
109
|
+
# enum GuiDropdownBoxProperty
|
110
|
+
# DropdownBox
|
76
111
|
ARROW_PADDING = 16 # DropdownBox arrow separation from border and items
|
77
112
|
DROPDOWN_ITEMS_SPACING = 17 # DropdownBox items separation
|
113
|
+
|
114
|
+
# enum GuiTextBoxProperty
|
115
|
+
# TextBox/TextBoxMulti/ValueBox/Spinner
|
78
116
|
TEXT_INNER_PADDING = 16 # TextBox/TextBoxMulti/ValueBox/Spinner inner text padding
|
79
117
|
TEXT_LINES_SPACING = 17 # TextBoxMulti lines separation
|
118
|
+
|
119
|
+
# enum GuiSpinnerProperty
|
120
|
+
# Spinner
|
80
121
|
SPIN_BUTTON_WIDTH = 16 # Spinner left/right buttons width
|
81
122
|
SPIN_BUTTON_SPACING = 17 # Spinner buttons separation
|
123
|
+
|
124
|
+
# enum GuiListViewProperty
|
125
|
+
# ListView
|
82
126
|
LIST_ITEMS_HEIGHT = 16 # ListView items height
|
83
127
|
LIST_ITEMS_SPACING = 17 # ListView items separation
|
84
128
|
SCROLLBAR_WIDTH = 18 # ListView scrollbar size (usually width)
|
85
129
|
SCROLLBAR_SIDE = 19 # ListView scrollbar side (0-left, 1-right)
|
130
|
+
|
131
|
+
# enum GuiColorPickerProperty
|
132
|
+
# ColorPicker
|
86
133
|
COLOR_SELECTOR_SIZE = 16
|
87
134
|
HUEBAR_WIDTH = 17 # ColorPicker right hue bar width
|
88
135
|
HUEBAR_PADDING = 18 # ColorPicker right hue bar separation from panel
|
89
136
|
HUEBAR_SELECTOR_HEIGHT = 19 # ColorPicker right hue bar selector height
|
90
137
|
HUEBAR_SELECTOR_OVERFLOW = 20 # ColorPicker right hue bar selector overflow
|
138
|
+
|
139
|
+
# enum GuiIconName
|
140
|
+
#
|
91
141
|
ICON_NONE = 0
|
92
142
|
ICON_FOLDER_FILE_OPEN = 1
|
93
143
|
ICON_FILE_SAVE_CLASSIC = 2
|
@@ -345,6 +395,7 @@ module Raylib
|
|
345
395
|
ICON_254 = 254
|
346
396
|
ICON_255 = 255
|
347
397
|
|
398
|
+
|
348
399
|
# Typedef
|
349
400
|
|
350
401
|
typedef :int, :GuiState
|
@@ -379,7 +430,7 @@ module Raylib
|
|
379
430
|
|
380
431
|
# Function
|
381
432
|
|
382
|
-
def self.setup_raygui_symbols
|
433
|
+
def self.setup_raygui_symbols
|
383
434
|
entries = [
|
384
435
|
|
385
436
|
# GuiEnable : Enable gui controls (global state)
|
@@ -721,7 +772,7 @@ module Raylib
|
|
721
772
|
# @return [char **]
|
722
773
|
[:GuiLoadIcons, :GuiLoadIcons, [:pointer, :bool], :pointer],
|
723
774
|
|
724
|
-
# GuiDrawIcon
|
775
|
+
# GuiDrawIcon
|
725
776
|
# @param iconId [int]
|
726
777
|
# @param posX [int]
|
727
778
|
# @param posY [int]
|
@@ -731,13 +782,9 @@ module Raylib
|
|
731
782
|
[:GuiDrawIcon, :GuiDrawIcon, [:int, :int, :int, :int, Color.by_value], :void],
|
732
783
|
]
|
733
784
|
entries.each do |entry|
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
$stderr.puts("[Warning] Failed to import #{entry[0]} (#{error}).") if output_error
|
738
|
-
end
|
785
|
+
attach_function entry[0], entry[1], entry[2], entry[3]
|
786
|
+
rescue FFI::NotFoundError => e
|
787
|
+
warn "[Warning] Failed to import #{entry[0]} (#{e})."
|
739
788
|
end
|
740
789
|
end
|
741
|
-
|
742
790
|
end
|
743
|
-
|