raylib 4.5.0.alpha1

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.
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