raylib 4.5.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +16 -0
  3. data/README.md +97 -0
  4. data/lib/raylib/core/callbacks.rb +19 -0
  5. data/lib/raylib/core/colors.rb +32 -0
  6. data/lib/raylib/core/enums.rb +694 -0
  7. data/lib/raylib/core/functions.rb +1552 -0
  8. data/lib/raylib/core/structs/audio_stream.rb +71 -0
  9. data/lib/raylib/core/structs/bone_info.rb +38 -0
  10. data/lib/raylib/core/structs/bounding_box.rb +38 -0
  11. data/lib/raylib/core/structs/camera2_d.rb +60 -0
  12. data/lib/raylib/core/structs/camera3_d.rb +74 -0
  13. data/lib/raylib/core/structs/color.rb +60 -0
  14. data/lib/raylib/core/structs/file_path_list.rb +51 -0
  15. data/lib/raylib/core/structs/font.rb +82 -0
  16. data/lib/raylib/core/structs/glyph_info.rb +71 -0
  17. data/lib/raylib/core/structs/image.rb +71 -0
  18. data/lib/raylib/core/structs/material.rb +49 -0
  19. data/lib/raylib/core/structs/material_map.rb +49 -0
  20. data/lib/raylib/core/structs/matrix.rb +192 -0
  21. data/lib/raylib/core/structs/mesh.rb +181 -0
  22. data/lib/raylib/core/structs/model.rb +115 -0
  23. data/lib/raylib/core/structs/model_animation.rb +60 -0
  24. data/lib/raylib/core/structs/music.rb +71 -0
  25. data/lib/raylib/core/structs/n_patch_info.rb +82 -0
  26. data/lib/raylib/core/structs/ray.rb +38 -0
  27. data/lib/raylib/core/structs/ray_collision.rb +60 -0
  28. data/lib/raylib/core/structs/rectangle.rb +60 -0
  29. data/lib/raylib/core/structs/render_texture.rb +52 -0
  30. data/lib/raylib/core/structs/shader.rb +38 -0
  31. data/lib/raylib/core/structs/sound.rb +38 -0
  32. data/lib/raylib/core/structs/texture.rb +77 -0
  33. data/lib/raylib/core/structs/transform.rb +49 -0
  34. data/lib/raylib/core/structs/vector2.rb +38 -0
  35. data/lib/raylib/core/structs/vector3.rb +49 -0
  36. data/lib/raylib/core/structs/vector4.rb +63 -0
  37. data/lib/raylib/core/structs/vr_device_info.rb +126 -0
  38. data/lib/raylib/core/structs/vr_stereo_config.rb +104 -0
  39. data/lib/raylib/core/structs/wave.rb +71 -0
  40. data/lib/raylib/core/structs.rb +32 -0
  41. data/lib/raylib/core.rb +5 -0
  42. data/lib/raylib/dsl.rb +2 -0
  43. data/lib/raylib/raymath/functions.rb +337 -0
  44. data/lib/raylib/raymath/structs/float16.rb +27 -0
  45. data/lib/raylib/raymath/structs/float3.rb +27 -0
  46. data/lib/raylib/raymath/structs.rb +2 -0
  47. data/lib/raylib/raymath.rb +2 -0
  48. data/lib/raylib/rlgl/callbacks.rb +4 -0
  49. data/lib/raylib/rlgl/enums.rb +270 -0
  50. data/lib/raylib/rlgl/functions.rb +448 -0
  51. data/lib/raylib/rlgl/structs/rl_draw_call.rb +60 -0
  52. data/lib/raylib/rlgl/structs/rl_render_batch.rb +82 -0
  53. data/lib/raylib/rlgl/structs/rl_vertex_buffer.rb +93 -0
  54. data/lib/raylib/rlgl/structs.rb +3 -0
  55. data/lib/raylib/rlgl.rb +4 -0
  56. data/lib/raylib/version.rb +5 -0
  57. data/lib/raylib.rb +12 -0
  58. metadata +162 -0
@@ -0,0 +1,71 @@
1
+ module Raylib
2
+ # AudioStream, custom audio stream
3
+ class AudioStream < FFI::Struct
4
+ layout(
5
+ :buffer, :pointer, # Pointer to internal data used by the audio system,
6
+ :processor, :pointer, # Pointer to internal data processor, useful for audio effects,
7
+ :sampleRate, :uint, # Frequency (samples per second),
8
+ :sampleSize, :uint, # Bit depth (bits per sample): 8, 16, 32 (24 not supported),
9
+ :channels, :uint, # Number of channels (1-mono, 2-stereo, ...)
10
+ )
11
+
12
+ def self.create(buffer, processor, sample_rate, sample_size, channels)
13
+ new.tap do |instance|
14
+ instance[:buffer] = buffer
15
+ instance[:processor] = processor
16
+ instance[:sampleRate] = sample_rate
17
+ instance[:sampleSize] = sample_size
18
+ instance[:channels] = channels
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "Raylib::AudioStream##{object_id} buffer=#{buffer} processor=#{processor} sample_rate=#{sample_rate} sample_size=#{sample_size} channels=#{channels}"
24
+ end
25
+
26
+ # Pointer to internal data used by the audio system
27
+ # @return [rAudioBuffer *] buffer
28
+ def buffer = self[:buffer]
29
+
30
+ # Sets Pointer to internal data used by the audio system
31
+ def buffer=(new_buffer)
32
+ self[:buffer] = new_buffer
33
+ end
34
+
35
+ # Pointer to internal data processor, useful for audio effects
36
+ # @return [rAudioProcessor *] processor
37
+ def processor = self[:processor]
38
+
39
+ # Sets Pointer to internal data processor, useful for audio effects
40
+ def processor=(new_processor)
41
+ self[:processor] = new_processor
42
+ end
43
+
44
+ # Frequency (samples per second)
45
+ # @return [Integer] sampleRate
46
+ def sample_rate = self[:sampleRate]
47
+
48
+ # Sets Frequency (samples per second)
49
+ def sample_rate=(new_sample_rate)
50
+ self[:sampleRate] = new_sample_rate
51
+ end
52
+
53
+ # Bit depth (bits per sample): 8, 16, 32 (24 not supported)
54
+ # @return [Integer] sampleSize
55
+ def sample_size = self[:sampleSize]
56
+
57
+ # Sets Bit depth (bits per sample): 8, 16, 32 (24 not supported)
58
+ def sample_size=(new_sample_size)
59
+ self[:sampleSize] = new_sample_size
60
+ end
61
+
62
+ # Number of channels (1-mono, 2-stereo, ...)
63
+ # @return [Integer] channels
64
+ def channels = self[:channels]
65
+
66
+ # Sets Number of channels (1-mono, 2-stereo, ...)
67
+ def channels=(new_channels)
68
+ self[:channels] = new_channels
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,38 @@
1
+ module Raylib
2
+ # Bone, skeletal animation bone
3
+ class BoneInfo < FFI::Struct
4
+ layout(
5
+ :name, [:char, 32], # Bone name,
6
+ :parent, :int, # Bone parent
7
+ )
8
+
9
+ def self.create(name, parent)
10
+ new.tap do |instance|
11
+ instance[:name] = name
12
+ instance[:parent] = parent
13
+ end
14
+ end
15
+
16
+ def to_s
17
+ "Raylib::BoneInfo##{object_id} name=#{name} parent=#{parent}"
18
+ end
19
+
20
+ # Bone name
21
+ # @return [char[32]] name
22
+ def name = self[:name]
23
+
24
+ # Sets Bone name
25
+ def name=(new_name)
26
+ self[:name] = new_name
27
+ end
28
+
29
+ # Bone parent
30
+ # @return [Integer] parent
31
+ def parent = self[:parent]
32
+
33
+ # Sets Bone parent
34
+ def parent=(new_parent)
35
+ self[:parent] = new_parent
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,38 @@
1
+ module Raylib
2
+ # BoundingBox
3
+ class BoundingBox < FFI::Struct
4
+ layout(
5
+ :min, Vector3, # Minimum vertex box-corner,
6
+ :max, Vector3, # Maximum vertex box-corner
7
+ )
8
+
9
+ def self.create(min, max)
10
+ new.tap do |instance|
11
+ instance[:min] = min
12
+ instance[:max] = max
13
+ end
14
+ end
15
+
16
+ def to_s
17
+ "Raylib::BoundingBox##{object_id} min=#{min} max=#{max}"
18
+ end
19
+
20
+ # Minimum vertex box-corner
21
+ # @return [Vector3] min
22
+ def min = self[:min]
23
+
24
+ # Sets Minimum vertex box-corner
25
+ def min=(new_min)
26
+ self[:min] = new_min
27
+ end
28
+
29
+ # Maximum vertex box-corner
30
+ # @return [Vector3] max
31
+ def max = self[:max]
32
+
33
+ # Sets Maximum vertex box-corner
34
+ def max=(new_max)
35
+ self[:max] = new_max
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,60 @@
1
+ module Raylib
2
+ # Camera2D, defines position/orientation in 2d space
3
+ class Camera2D < FFI::Struct
4
+ layout(
5
+ :offset, Vector2, # Camera offset (displacement from target),
6
+ :target, Vector2, # Camera target (rotation and zoom origin),
7
+ :rotation, :float, # Camera rotation in degrees,
8
+ :zoom, :float, # Camera zoom (scaling), should be 1.0f by default
9
+ )
10
+
11
+ def self.create(offset, target, rotation, zoom)
12
+ new.tap do |instance|
13
+ instance[:offset] = offset
14
+ instance[:target] = target
15
+ instance[:rotation] = rotation
16
+ instance[:zoom] = zoom
17
+ end
18
+ end
19
+
20
+ def to_s
21
+ "Raylib::Camera2D##{object_id} offset=#{offset} target=#{target} rotation=#{rotation} zoom=#{zoom}"
22
+ end
23
+
24
+ # Camera offset (displacement from target)
25
+ # @return [Vector2] offset
26
+ def offset = self[:offset]
27
+
28
+ # Sets Camera offset (displacement from target)
29
+ def offset=(new_offset)
30
+ self[:offset] = new_offset
31
+ end
32
+
33
+ # Camera target (rotation and zoom origin)
34
+ # @return [Vector2] target
35
+ def target = self[:target]
36
+
37
+ # Sets Camera target (rotation and zoom origin)
38
+ def target=(new_target)
39
+ self[:target] = new_target
40
+ end
41
+
42
+ # Camera rotation in degrees
43
+ # @return [Float] rotation
44
+ def rotation = self[:rotation]
45
+
46
+ # Sets Camera rotation in degrees
47
+ def rotation=(new_rotation)
48
+ self[:rotation] = new_rotation
49
+ end
50
+
51
+ # Camera zoom (scaling), should be 1.0f by default
52
+ # @return [Float] zoom
53
+ def zoom = self[:zoom]
54
+
55
+ # Sets Camera zoom (scaling), should be 1.0f by default
56
+ def zoom=(new_zoom)
57
+ self[:zoom] = new_zoom
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,74 @@
1
+ module Raylib
2
+ # Camera, defines position/orientation in 3d space
3
+ class Camera3D < FFI::Struct
4
+ layout(
5
+ :position, Vector3, # Camera position,
6
+ :target, Vector3, # Camera target it looks-at,
7
+ :up, Vector3, # Camera up vector (rotation over its axis),
8
+ :fovy, :float, # Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic,
9
+ :projection, :int, # Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
10
+ )
11
+
12
+ def self.create(position, target, up, fovy, projection)
13
+ new.tap do |instance|
14
+ instance[:position] = position
15
+ instance[:target] = target
16
+ instance[:up] = up
17
+ instance[:fovy] = fovy
18
+ instance[:projection] = projection
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "Raylib::Camera3D##{object_id} position=#{position} target=#{target} up=#{up} fovy=#{fovy} projection=#{projection}"
24
+ end
25
+
26
+ # Camera position
27
+ # @return [Vector3] position
28
+ def position = self[:position]
29
+
30
+ # Sets Camera position
31
+ def position=(new_position)
32
+ self[:position] = new_position
33
+ end
34
+
35
+ # Camera target it looks-at
36
+ # @return [Vector3] target
37
+ def target = self[:target]
38
+
39
+ # Sets Camera target it looks-at
40
+ def target=(new_target)
41
+ self[:target] = new_target
42
+ end
43
+
44
+ # Camera up vector (rotation over its axis)
45
+ # @return [Vector3] up
46
+ def up = self[:up]
47
+
48
+ # Sets Camera up vector (rotation over its axis)
49
+ def up=(new_up)
50
+ self[:up] = new_up
51
+ end
52
+
53
+ # Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic
54
+ # @return [Float] fovy
55
+ def fovy = self[:fovy]
56
+
57
+ # Sets Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic
58
+ def fovy=(new_fovy)
59
+ self[:fovy] = new_fovy
60
+ end
61
+
62
+ # Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
63
+ # @return [Integer] projection
64
+ def projection = self[:projection]
65
+
66
+ # Sets Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
67
+ def projection=(new_projection)
68
+ self[:projection] = new_projection
69
+ end
70
+ end
71
+
72
+ # Camera type fallback, defaults to Camera3D
73
+ Camera = Camera3D
74
+ end
@@ -0,0 +1,60 @@
1
+ module Raylib
2
+ # Color, 4 components, R8G8B8A8 (32bit)
3
+ class Color < FFI::Struct
4
+ layout(
5
+ :r, :uchar, # Color red value,
6
+ :g, :uchar, # Color green value,
7
+ :b, :uchar, # Color blue value,
8
+ :a, :uchar, # Color alpha value
9
+ )
10
+
11
+ def self.create(r, g, b, a)
12
+ new.tap do |instance|
13
+ instance[:r] = r
14
+ instance[:g] = g
15
+ instance[:b] = b
16
+ instance[:a] = a
17
+ end
18
+ end
19
+
20
+ def to_s
21
+ "Raylib::Color##{object_id} r=#{r} g=#{g} b=#{b} a=#{a}"
22
+ end
23
+
24
+ # Color red value
25
+ # @return [unsigned char] r
26
+ def r = self[:r]
27
+
28
+ # Sets Color red value
29
+ def r=(new_r)
30
+ self[:r] = new_r
31
+ end
32
+
33
+ # Color green value
34
+ # @return [unsigned char] g
35
+ def g = self[:g]
36
+
37
+ # Sets Color green value
38
+ def g=(new_g)
39
+ self[:g] = new_g
40
+ end
41
+
42
+ # Color blue value
43
+ # @return [unsigned char] b
44
+ def b = self[:b]
45
+
46
+ # Sets Color blue value
47
+ def b=(new_b)
48
+ self[:b] = new_b
49
+ end
50
+
51
+ # Color alpha value
52
+ # @return [unsigned char] a
53
+ def a = self[:a]
54
+
55
+ # Sets Color alpha value
56
+ def a=(new_a)
57
+ self[:a] = new_a
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,51 @@
1
+ module Raylib
2
+ # File path list
3
+ class FilePathList < FFI::Struct
4
+ layout(
5
+ :capacity, :uint, # Filepaths max entries,
6
+ :count, :uint, # Filepaths entries count,
7
+ :paths, :pointer, # Filepaths entries
8
+ )
9
+
10
+ def self.create(capacity, count, paths)
11
+ new.tap do |instance|
12
+ instance[:capacity] = capacity
13
+ instance[:count] = count
14
+ instance[:paths] = paths
15
+ end
16
+ end
17
+
18
+ def to_s
19
+ "Raylib::FilePathList##{object_id} capacity=#{capacity} count=#{count} paths=#{paths}"
20
+ end
21
+
22
+ # Filepaths max entries
23
+ # @return [Integer] capacity
24
+ def capacity = self[:capacity]
25
+
26
+ # Sets Filepaths max entries
27
+ def capacity=(new_capacity)
28
+ self[:capacity] = new_capacity
29
+ end
30
+
31
+ # Filepaths entries count
32
+ # @return [Integer] count
33
+ def count = self[:count]
34
+
35
+ # Sets Filepaths entries count
36
+ def count=(new_count)
37
+ self[:count] = new_count
38
+ end
39
+
40
+ # Filepaths entries
41
+ # @return [Array<String>] paths
42
+ def paths
43
+ self[:paths].get_array_of_string(0, count)
44
+ end
45
+
46
+ # Sets Filepaths entries
47
+ def paths=(new_paths)
48
+ self[:paths] = new_paths
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,82 @@
1
+ module Raylib
2
+ # Font, font texture and GlyphInfo array data
3
+ class Font < FFI::Struct
4
+ layout(
5
+ :baseSize, :int, # Base size (default chars height),
6
+ :glyphCount, :int, # Number of glyph characters,
7
+ :glyphPadding, :int, # Padding around the glyph characters,
8
+ :texture, Texture2D, # Texture atlas containing the glyphs,
9
+ :recs, :pointer, # Rectangles in texture for the glyphs,
10
+ :glyphs, :pointer, # Glyphs info data
11
+ )
12
+
13
+ def self.create(base_size, glyph_count, glyph_padding, texture, recs, glyphs)
14
+ new.tap do |instance|
15
+ instance[:baseSize] = base_size
16
+ instance[:glyphCount] = glyph_count
17
+ instance[:glyphPadding] = glyph_padding
18
+ instance[:texture] = texture
19
+ instance[:recs] = recs
20
+ instance[:glyphs] = glyphs
21
+ end
22
+ end
23
+
24
+ def to_s
25
+ "Raylib::Font##{object_id} base_size=#{base_size} glyph_count=#{glyph_count} glyph_padding=#{glyph_padding} texture=#{texture} recs=#{recs} glyphs=#{glyphs}"
26
+ end
27
+
28
+ # Base size (default chars height)
29
+ # @return [Integer] baseSize
30
+ def base_size = self[:baseSize]
31
+
32
+ # Sets Base size (default chars height)
33
+ def base_size=(new_base_size)
34
+ self[:baseSize] = new_base_size
35
+ end
36
+
37
+ # Number of glyph characters
38
+ # @return [Integer] glyphCount
39
+ def glyph_count = self[:glyphCount]
40
+
41
+ # Sets Number of glyph characters
42
+ def glyph_count=(new_glyph_count)
43
+ self[:glyphCount] = new_glyph_count
44
+ end
45
+
46
+ # Padding around the glyph characters
47
+ # @return [Integer] glyphPadding
48
+ def glyph_padding = self[:glyphPadding]
49
+
50
+ # Sets Padding around the glyph characters
51
+ def glyph_padding=(new_glyph_padding)
52
+ self[:glyphPadding] = new_glyph_padding
53
+ end
54
+
55
+ # Texture atlas containing the glyphs
56
+ # @return [Texture2D] texture
57
+ def texture = self[:texture]
58
+
59
+ # Sets Texture atlas containing the glyphs
60
+ def texture=(new_texture)
61
+ self[:texture] = new_texture
62
+ end
63
+
64
+ # Rectangles in texture for the glyphs
65
+ # @return [Rectangle *] recs
66
+ def recs = self[:recs]
67
+
68
+ # Sets Rectangles in texture for the glyphs
69
+ def recs=(new_recs)
70
+ self[:recs] = new_recs
71
+ end
72
+
73
+ # Glyphs info data
74
+ # @return [GlyphInfo *] glyphs
75
+ def glyphs = self[:glyphs]
76
+
77
+ # Sets Glyphs info data
78
+ def glyphs=(new_glyphs)
79
+ self[:glyphs] = new_glyphs
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,71 @@
1
+ module Raylib
2
+ # GlyphInfo, font characters glyphs info
3
+ class GlyphInfo < FFI::Struct
4
+ layout(
5
+ :value, :int, # Character value (Unicode),
6
+ :offsetX, :int, # Character offset X when drawing,
7
+ :offsetY, :int, # Character offset Y when drawing,
8
+ :advanceX, :int, # Character advance position X,
9
+ :image, Image, # Character image data
10
+ )
11
+
12
+ def self.create(value, offset_x, offset_y, advance_x, image)
13
+ new.tap do |instance|
14
+ instance[:value] = value
15
+ instance[:offsetX] = offset_x
16
+ instance[:offsetY] = offset_y
17
+ instance[:advanceX] = advance_x
18
+ instance[:image] = image
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "Raylib::GlyphInfo##{object_id} value=#{value} offset_x=#{offset_x} offset_y=#{offset_y} advance_x=#{advance_x} image=#{image}"
24
+ end
25
+
26
+ # Character value (Unicode)
27
+ # @return [Integer] value
28
+ def value = self[:value]
29
+
30
+ # Sets Character value (Unicode)
31
+ def value=(new_value)
32
+ self[:value] = new_value
33
+ end
34
+
35
+ # Character offset X when drawing
36
+ # @return [Integer] offsetX
37
+ def offset_x = self[:offsetX]
38
+
39
+ # Sets Character offset X when drawing
40
+ def offset_x=(new_offset_x)
41
+ self[:offsetX] = new_offset_x
42
+ end
43
+
44
+ # Character offset Y when drawing
45
+ # @return [Integer] offsetY
46
+ def offset_y = self[:offsetY]
47
+
48
+ # Sets Character offset Y when drawing
49
+ def offset_y=(new_offset_y)
50
+ self[:offsetY] = new_offset_y
51
+ end
52
+
53
+ # Character advance position X
54
+ # @return [Integer] advanceX
55
+ def advance_x = self[:advanceX]
56
+
57
+ # Sets Character advance position X
58
+ def advance_x=(new_advance_x)
59
+ self[:advanceX] = new_advance_x
60
+ end
61
+
62
+ # Character image data
63
+ # @return [Image] image
64
+ def image = self[:image]
65
+
66
+ # Sets Character image data
67
+ def image=(new_image)
68
+ self[:image] = new_image
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,71 @@
1
+ module Raylib
2
+ # Image, pixel data stored in CPU memory (RAM)
3
+ class Image < FFI::Struct
4
+ layout(
5
+ :data, :pointer, # Image raw data,
6
+ :width, :int, # Image base width,
7
+ :height, :int, # Image base height,
8
+ :mipmaps, :int, # Mipmap levels, 1 by default,
9
+ :format, :int, # Data format (PixelFormat type)
10
+ )
11
+
12
+ def self.create(data, width, height, mipmaps, format)
13
+ new.tap do |instance|
14
+ instance[:data] = data
15
+ instance[:width] = width
16
+ instance[:height] = height
17
+ instance[:mipmaps] = mipmaps
18
+ instance[:format] = format
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "Raylib::Image##{object_id} data=#{data} width=#{width} height=#{height} mipmaps=#{mipmaps} format=#{format}"
24
+ end
25
+
26
+ # Image raw data
27
+ # @return [void *] data
28
+ def data = self[:data]
29
+
30
+ # Sets Image raw data
31
+ def data=(new_data)
32
+ self[:data] = new_data
33
+ end
34
+
35
+ # Image base width
36
+ # @return [Integer] width
37
+ def width = self[:width]
38
+
39
+ # Sets Image base width
40
+ def width=(new_width)
41
+ self[:width] = new_width
42
+ end
43
+
44
+ # Image base height
45
+ # @return [Integer] height
46
+ def height = self[:height]
47
+
48
+ # Sets Image base height
49
+ def height=(new_height)
50
+ self[:height] = new_height
51
+ end
52
+
53
+ # Mipmap levels, 1 by default
54
+ # @return [Integer] mipmaps
55
+ def mipmaps = self[:mipmaps]
56
+
57
+ # Sets Mipmap levels, 1 by default
58
+ def mipmaps=(new_mipmaps)
59
+ self[:mipmaps] = new_mipmaps
60
+ end
61
+
62
+ # Data format (PixelFormat type)
63
+ # @return [Integer] format
64
+ def format = self[:format]
65
+
66
+ # Sets Data format (PixelFormat type)
67
+ def format=(new_format)
68
+ self[:format] = new_format
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,49 @@
1
+ module Raylib
2
+ # Material, includes shader and maps
3
+ class Material < FFI::Struct
4
+ layout(
5
+ :shader, Shader, # Material shader,
6
+ :maps, :pointer, # Material maps array (MAX_MATERIAL_MAPS),
7
+ :params, [:float, 4], # Material generic parameters (if required)
8
+ )
9
+
10
+ def self.create(shader, maps, params)
11
+ new.tap do |instance|
12
+ instance[:shader] = shader
13
+ instance[:maps] = maps
14
+ instance[:params] = params
15
+ end
16
+ end
17
+
18
+ def to_s
19
+ "Raylib::Material##{object_id} shader=#{shader} maps=#{maps} params=#{params}"
20
+ end
21
+
22
+ # Material shader
23
+ # @return [Shader] shader
24
+ def shader = self[:shader]
25
+
26
+ # Sets Material shader
27
+ def shader=(new_shader)
28
+ self[:shader] = new_shader
29
+ end
30
+
31
+ # Material maps array (MAX_MATERIAL_MAPS)
32
+ # @return [MaterialMap *] maps
33
+ def maps = self[:maps]
34
+
35
+ # Sets Material maps array (MAX_MATERIAL_MAPS)
36
+ def maps=(new_maps)
37
+ self[:maps] = new_maps
38
+ end
39
+
40
+ # Material generic parameters (if required)
41
+ # @return [float[4]] params
42
+ def params = self[:params]
43
+
44
+ # Sets Material generic parameters (if required)
45
+ def params=(new_params)
46
+ self[:params] = new_params
47
+ end
48
+ end
49
+ end