raylib-bindings 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
data/lib/raylib_main.rb
CHANGED
@@ -17,6 +17,8 @@ module Raylib
|
|
17
17
|
|
18
18
|
# Enum
|
19
19
|
|
20
|
+
# enum ConfigFlags
|
21
|
+
# System/Window config flags
|
20
22
|
FLAG_VSYNC_HINT = 64 # Set to try enabling V-Sync on GPU
|
21
23
|
FLAG_FULLSCREEN_MODE = 2 # Set to run program in fullscreen
|
22
24
|
FLAG_WINDOW_RESIZABLE = 4 # Set to allow resizable window
|
@@ -32,6 +34,9 @@ module Raylib
|
|
32
34
|
FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384 # Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED
|
33
35
|
FLAG_MSAA_4X_HINT = 32 # Set to try enabling MSAA 4X
|
34
36
|
FLAG_INTERLACED_HINT = 65536 # Set to try enabling interlaced video format (for V3D)
|
37
|
+
|
38
|
+
# enum TraceLogLevel
|
39
|
+
# Trace log level
|
35
40
|
LOG_ALL = 0 # Display all logs
|
36
41
|
LOG_TRACE = 1 # Trace logging, intended for internal use only
|
37
42
|
LOG_DEBUG = 2 # Debug logging, used for internal debugging, it should be disabled on release builds
|
@@ -40,6 +45,9 @@ module Raylib
|
|
40
45
|
LOG_ERROR = 5 # Error logging, used on unrecoverable failures
|
41
46
|
LOG_FATAL = 6 # Fatal logging, used to abort program: exit(EXIT_FAILURE)
|
42
47
|
LOG_NONE = 7 # Disable logging
|
48
|
+
|
49
|
+
# enum KeyboardKey
|
50
|
+
# Keyboard keys (US keyboard layout)
|
43
51
|
KEY_NULL = 0 # Key: NULL, used for no key pressed
|
44
52
|
KEY_APOSTROPHE = 39 # Key: '
|
45
53
|
KEY_COMMA = 44 # Key: ,
|
@@ -150,6 +158,9 @@ module Raylib
|
|
150
158
|
KEY_MENU = 82 # Key: Android menu button
|
151
159
|
KEY_VOLUME_UP = 24 # Key: Android volume up button
|
152
160
|
KEY_VOLUME_DOWN = 25 # Key: Android volume down button
|
161
|
+
|
162
|
+
# enum MouseButton
|
163
|
+
# Mouse buttons
|
153
164
|
MOUSE_BUTTON_LEFT = 0 # Mouse button left
|
154
165
|
MOUSE_BUTTON_RIGHT = 1 # Mouse button right
|
155
166
|
MOUSE_BUTTON_MIDDLE = 2 # Mouse button middle (pressed wheel)
|
@@ -157,6 +168,9 @@ module Raylib
|
|
157
168
|
MOUSE_BUTTON_EXTRA = 4 # Mouse button extra (advanced mouse device)
|
158
169
|
MOUSE_BUTTON_FORWARD = 5 # Mouse button forward (advanced mouse device)
|
159
170
|
MOUSE_BUTTON_BACK = 6 # Mouse button back (advanced mouse device)
|
171
|
+
|
172
|
+
# enum MouseCursor
|
173
|
+
# Mouse cursor
|
160
174
|
MOUSE_CURSOR_DEFAULT = 0 # Default pointer shape
|
161
175
|
MOUSE_CURSOR_ARROW = 1 # Arrow shape
|
162
176
|
MOUSE_CURSOR_IBEAM = 2 # Text writing cursor shape
|
@@ -168,6 +182,9 @@ module Raylib
|
|
168
182
|
MOUSE_CURSOR_RESIZE_NESW = 8 # The top-right to bottom-left diagonal resize/move arrow shape
|
169
183
|
MOUSE_CURSOR_RESIZE_ALL = 9 # The omni-directional resize/move cursor shape
|
170
184
|
MOUSE_CURSOR_NOT_ALLOWED = 10 # The operation-not-allowed shape
|
185
|
+
|
186
|
+
# enum GamepadButton
|
187
|
+
# Gamepad buttons
|
171
188
|
GAMEPAD_BUTTON_UNKNOWN = 0 # Unknown button, just for error checking
|
172
189
|
GAMEPAD_BUTTON_LEFT_FACE_UP = 1 # Gamepad left DPAD up button
|
173
190
|
GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2 # Gamepad left DPAD right button
|
@@ -186,12 +203,18 @@ module Raylib
|
|
186
203
|
GAMEPAD_BUTTON_MIDDLE_RIGHT = 15 # Gamepad center buttons, right one (i.e. PS3: Start)
|
187
204
|
GAMEPAD_BUTTON_LEFT_THUMB = 16 # Gamepad joystick pressed button left
|
188
205
|
GAMEPAD_BUTTON_RIGHT_THUMB = 17 # Gamepad joystick pressed button right
|
206
|
+
|
207
|
+
# enum GamepadAxis
|
208
|
+
# Gamepad axis
|
189
209
|
GAMEPAD_AXIS_LEFT_X = 0 # Gamepad left stick X axis
|
190
210
|
GAMEPAD_AXIS_LEFT_Y = 1 # Gamepad left stick Y axis
|
191
211
|
GAMEPAD_AXIS_RIGHT_X = 2 # Gamepad right stick X axis
|
192
212
|
GAMEPAD_AXIS_RIGHT_Y = 3 # Gamepad right stick Y axis
|
193
213
|
GAMEPAD_AXIS_LEFT_TRIGGER = 4 # Gamepad back trigger left, pressure level: [1..-1]
|
194
214
|
GAMEPAD_AXIS_RIGHT_TRIGGER = 5 # Gamepad back trigger right, pressure level: [1..-1]
|
215
|
+
|
216
|
+
# enum MaterialMapIndex
|
217
|
+
# Material map index
|
195
218
|
MATERIAL_MAP_ALBEDO = 0 # Albedo material (same as: MATERIAL_MAP_DIFFUSE)
|
196
219
|
MATERIAL_MAP_METALNESS = 1 # Metalness material (same as: MATERIAL_MAP_SPECULAR)
|
197
220
|
MATERIAL_MAP_NORMAL = 2 # Normal material
|
@@ -203,6 +226,9 @@ module Raylib
|
|
203
226
|
MATERIAL_MAP_IRRADIANCE = 8 # Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
|
204
227
|
MATERIAL_MAP_PREFILTER = 9 # Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
|
205
228
|
MATERIAL_MAP_BRDF = 10 # Brdf material
|
229
|
+
|
230
|
+
# enum ShaderLocationIndex
|
231
|
+
# Shader location index
|
206
232
|
SHADER_LOC_VERTEX_POSITION = 0 # Shader location: vertex attribute: position
|
207
233
|
SHADER_LOC_VERTEX_TEXCOORD01 = 1 # Shader location: vertex attribute: texcoord01
|
208
234
|
SHADER_LOC_VERTEX_TEXCOORD02 = 2 # Shader location: vertex attribute: texcoord02
|
@@ -229,6 +255,9 @@ module Raylib
|
|
229
255
|
SHADER_LOC_MAP_IRRADIANCE = 23 # Shader location: samplerCube texture: irradiance
|
230
256
|
SHADER_LOC_MAP_PREFILTER = 24 # Shader location: samplerCube texture: prefilter
|
231
257
|
SHADER_LOC_MAP_BRDF = 25 # Shader location: sampler2d texture: brdf
|
258
|
+
|
259
|
+
# enum ShaderUniformDataType
|
260
|
+
# Shader uniform data type
|
232
261
|
SHADER_UNIFORM_FLOAT = 0 # Shader uniform type: float
|
233
262
|
SHADER_UNIFORM_VEC2 = 1 # Shader uniform type: vec2 (2 float)
|
234
263
|
SHADER_UNIFORM_VEC3 = 2 # Shader uniform type: vec3 (3 float)
|
@@ -238,10 +267,16 @@ module Raylib
|
|
238
267
|
SHADER_UNIFORM_IVEC3 = 6 # Shader uniform type: ivec3 (3 int)
|
239
268
|
SHADER_UNIFORM_IVEC4 = 7 # Shader uniform type: ivec4 (4 int)
|
240
269
|
SHADER_UNIFORM_SAMPLER2D = 8 # Shader uniform type: sampler2d
|
270
|
+
|
271
|
+
# enum ShaderAttributeDataType
|
272
|
+
# Shader attribute data types
|
241
273
|
SHADER_ATTRIB_FLOAT = 0 # Shader attribute type: float
|
242
274
|
SHADER_ATTRIB_VEC2 = 1 # Shader attribute type: vec2 (2 float)
|
243
275
|
SHADER_ATTRIB_VEC3 = 2 # Shader attribute type: vec3 (3 float)
|
244
276
|
SHADER_ATTRIB_VEC4 = 3 # Shader attribute type: vec4 (4 float)
|
277
|
+
|
278
|
+
# enum PixelFormat
|
279
|
+
# Pixel formats
|
245
280
|
PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1 # 8 bit per pixel (no alpha)
|
246
281
|
PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2 # 8*2 bpp (2 channels)
|
247
282
|
PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3 # 16 bpp
|
@@ -263,25 +298,40 @@ module Raylib
|
|
263
298
|
PIXELFORMAT_COMPRESSED_PVRT_RGBA = 19 # 4 bpp
|
264
299
|
PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 20 # 8 bpp
|
265
300
|
PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 21 # 2 bpp
|
301
|
+
|
302
|
+
# enum TextureFilter
|
303
|
+
# Texture parameters: filter mode
|
266
304
|
TEXTURE_FILTER_POINT = 0 # No filter, just pixel approximation
|
267
305
|
TEXTURE_FILTER_BILINEAR = 1 # Linear filtering
|
268
306
|
TEXTURE_FILTER_TRILINEAR = 2 # Trilinear filtering (linear with mipmaps)
|
269
307
|
TEXTURE_FILTER_ANISOTROPIC_4X = 3 # Anisotropic filtering 4x
|
270
308
|
TEXTURE_FILTER_ANISOTROPIC_8X = 4 # Anisotropic filtering 8x
|
271
309
|
TEXTURE_FILTER_ANISOTROPIC_16X = 5 # Anisotropic filtering 16x
|
310
|
+
|
311
|
+
# enum TextureWrap
|
312
|
+
# Texture parameters: wrap mode
|
272
313
|
TEXTURE_WRAP_REPEAT = 0 # Repeats texture in tiled mode
|
273
314
|
TEXTURE_WRAP_CLAMP = 1 # Clamps texture to edge pixel in tiled mode
|
274
315
|
TEXTURE_WRAP_MIRROR_REPEAT = 2 # Mirrors and repeats the texture in tiled mode
|
275
316
|
TEXTURE_WRAP_MIRROR_CLAMP = 3 # Mirrors and clamps to border the texture in tiled mode
|
317
|
+
|
318
|
+
# enum CubemapLayout
|
319
|
+
# Cubemap layouts
|
276
320
|
CUBEMAP_LAYOUT_AUTO_DETECT = 0 # Automatically detect layout type
|
277
321
|
CUBEMAP_LAYOUT_LINE_VERTICAL = 1 # Layout is defined by a vertical line with faces
|
278
322
|
CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2 # Layout is defined by an horizontal line with faces
|
279
323
|
CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3 # Layout is defined by a 3x4 cross with cubemap faces
|
280
324
|
CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4 # Layout is defined by a 4x3 cross with cubemap faces
|
281
325
|
CUBEMAP_LAYOUT_PANORAMA = 5 # Layout is defined by a panorama image (equirectangular map)
|
326
|
+
|
327
|
+
# enum FontType
|
328
|
+
# Font type, defines generation method
|
282
329
|
FONT_DEFAULT = 0 # Default font generation, anti-aliased
|
283
330
|
FONT_BITMAP = 1 # Bitmap font generation, no anti-aliasing
|
284
331
|
FONT_SDF = 2 # SDF font generation, requires external shader
|
332
|
+
|
333
|
+
# enum BlendMode
|
334
|
+
# Color blending modes (pre-defined)
|
285
335
|
BLEND_ALPHA = 0 # Blend textures considering alpha (default)
|
286
336
|
BLEND_ADDITIVE = 1 # Blend textures adding colors
|
287
337
|
BLEND_MULTIPLIED = 2 # Blend textures multiplying colors
|
@@ -290,6 +340,9 @@ module Raylib
|
|
290
340
|
BLEND_ALPHA_PREMULTIPLY = 5 # Blend premultiplied textures considering alpha
|
291
341
|
BLEND_CUSTOM = 6 # Blend textures using custom src/dst factors (use rlSetBlendFactors())
|
292
342
|
BLEND_CUSTOM_SEPARATE = 7 # Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate())
|
343
|
+
|
344
|
+
# enum Gesture
|
345
|
+
# Gesture
|
293
346
|
GESTURE_NONE = 0 # No gesture
|
294
347
|
GESTURE_TAP = 1 # Tap gesture
|
295
348
|
GESTURE_DOUBLETAP = 2 # Double tap gesture
|
@@ -301,17 +354,27 @@ module Raylib
|
|
301
354
|
GESTURE_SWIPE_DOWN = 128 # Swipe down gesture
|
302
355
|
GESTURE_PINCH_IN = 256 # Pinch in gesture
|
303
356
|
GESTURE_PINCH_OUT = 512 # Pinch out gesture
|
357
|
+
|
358
|
+
# enum CameraMode
|
359
|
+
# Camera system modes
|
304
360
|
CAMERA_CUSTOM = 0 # Custom camera
|
305
361
|
CAMERA_FREE = 1 # Free camera
|
306
362
|
CAMERA_ORBITAL = 2 # Orbital camera
|
307
363
|
CAMERA_FIRST_PERSON = 3 # First person camera
|
308
364
|
CAMERA_THIRD_PERSON = 4 # Third person camera
|
365
|
+
|
366
|
+
# enum CameraProjection
|
367
|
+
# Camera projection
|
309
368
|
CAMERA_PERSPECTIVE = 0 # Perspective projection
|
310
369
|
CAMERA_ORTHOGRAPHIC = 1 # Orthographic projection
|
370
|
+
|
371
|
+
# enum NPatchLayout
|
372
|
+
# N-patch layout
|
311
373
|
NPATCH_NINE_PATCH = 0 # Npatch layout: 3x3 tiles
|
312
374
|
NPATCH_THREE_PATCH_VERTICAL = 1 # Npatch layout: 1x3 tiles
|
313
375
|
NPATCH_THREE_PATCH_HORIZONTAL = 2 # Npatch layout: 3x1 tiles
|
314
376
|
|
377
|
+
|
315
378
|
# Typedef
|
316
379
|
|
317
380
|
typedef :int, :ConfigFlags
|
@@ -707,19 +770,7 @@ module Raylib
|
|
707
770
|
|
708
771
|
# Function
|
709
772
|
|
710
|
-
def
|
711
|
-
# [TODO] Fix matrix copy
|
712
|
-
# - In C, DrawModelEx uses the whole copy of `model` on stack, which will never affect the content of original `model`.
|
713
|
-
# But Ruby FFI seems to pass the reference of `model` to DrawModelEx, which results in transform accumulation (e.g.:`model` get rotated by `rotationAngle` around `rotationAxis` every frame).
|
714
|
-
# So here I copy the transform into `mtx_clone` and copy back this to the original after finished calling DrawModelEx.
|
715
|
-
# - Other DrawXXX members (DrawModel, DrawModelWires, DrawModelWiresEx) are free from this problem.
|
716
|
-
# - They call DrawModelEx in C layer, which will use the copy of `model` on stack.
|
717
|
-
mtx_clone = model[:transform].clone
|
718
|
-
internalDrawModelEx(model, position, rotationAxis, rotationAngle, scale, tint)
|
719
|
-
model[:transform] = mtx_clone
|
720
|
-
end
|
721
|
-
|
722
|
-
def self.setup_raylib_symbols(output_error = false)
|
773
|
+
def self.setup_raylib_symbols
|
723
774
|
entries = [
|
724
775
|
|
725
776
|
# InitWindow : Initialize window and OpenGL context
|
@@ -3225,7 +3276,7 @@ module Raylib
|
|
3225
3276
|
# @return [void]
|
3226
3277
|
[:DrawModel, :DrawModel, [Model.by_value, Vector3.by_value, :float, Color.by_value], :void],
|
3227
3278
|
|
3228
|
-
#
|
3279
|
+
# internalDrawModelEx : Draw a model with extended parameters
|
3229
3280
|
# @param model [Model]
|
3230
3281
|
# @param position [Vector3]
|
3231
3282
|
# @param rotationAxis [Vector3]
|
@@ -3862,13 +3913,9 @@ module Raylib
|
|
3862
3913
|
[:DetachAudioStreamProcessor, :DetachAudioStreamProcessor, [AudioStream.by_value, :AudioCallback], :void],
|
3863
3914
|
]
|
3864
3915
|
entries.each do |entry|
|
3865
|
-
|
3866
|
-
|
3867
|
-
|
3868
|
-
$stderr.puts("[Warning] Failed to import #{entry[0]} (#{error}).") if output_error
|
3869
|
-
end
|
3916
|
+
attach_function entry[0], entry[1], entry[2], entry[3]
|
3917
|
+
rescue FFI::NotFoundError => e
|
3918
|
+
warn "[Warning] Failed to import #{entry[0]} (#{e})."
|
3870
3919
|
end
|
3871
3920
|
end
|
3872
|
-
|
3873
3921
|
end
|
3874
|
-
|