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,49 @@
1
+ module Raylib
2
+ # MaterialMap
3
+ class MaterialMap < FFI::Struct
4
+ layout(
5
+ :texture, Texture2D, # Material map texture,
6
+ :color, Color, # Material map color,
7
+ :value, :float, # Material map value
8
+ )
9
+
10
+ def self.create(texture, color, value)
11
+ new.tap do |instance|
12
+ instance[:texture] = texture
13
+ instance[:color] = color
14
+ instance[:value] = value
15
+ end
16
+ end
17
+
18
+ def to_s
19
+ "Raylib::MaterialMap##{object_id} texture=#{texture} color=#{color} value=#{value}"
20
+ end
21
+
22
+ # Material map texture
23
+ # @return [Texture2D] texture
24
+ def texture = self[:texture]
25
+
26
+ # Sets Material map texture
27
+ def texture=(new_texture)
28
+ self[:texture] = new_texture
29
+ end
30
+
31
+ # Material map color
32
+ # @return [Color] color
33
+ def color = self[:color]
34
+
35
+ # Sets Material map color
36
+ def color=(new_color)
37
+ self[:color] = new_color
38
+ end
39
+
40
+ # Material map value
41
+ # @return [Float] value
42
+ def value = self[:value]
43
+
44
+ # Sets Material map value
45
+ def value=(new_value)
46
+ self[:value] = new_value
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,192 @@
1
+ module Raylib
2
+ # Matrix, 4x4 components, column major, OpenGL style, right-handed
3
+ class Matrix < FFI::Struct
4
+ layout(
5
+ :m0, :float, # Matrix first row (4 components),
6
+ :m4, :float, # Matrix first row (4 components),
7
+ :m8, :float, # Matrix first row (4 components),
8
+ :m12, :float, # Matrix first row (4 components),
9
+ :m1, :float, # Matrix second row (4 components),
10
+ :m5, :float, # Matrix second row (4 components),
11
+ :m9, :float, # Matrix second row (4 components),
12
+ :m13, :float, # Matrix second row (4 components),
13
+ :m2, :float, # Matrix third row (4 components),
14
+ :m6, :float, # Matrix third row (4 components),
15
+ :m10, :float, # Matrix third row (4 components),
16
+ :m14, :float, # Matrix third row (4 components),
17
+ :m3, :float, # Matrix fourth row (4 components),
18
+ :m7, :float, # Matrix fourth row (4 components),
19
+ :m11, :float, # Matrix fourth row (4 components),
20
+ :m15, :float, # Matrix fourth row (4 components)
21
+ )
22
+
23
+ def self.create(m0, m4, m8, m12, m1, m5, m9, m13, m2, m6, m10, m14, m3, m7, m11, m15)
24
+ new.tap do |instance|
25
+ instance[:m0] = m0
26
+ instance[:m4] = m4
27
+ instance[:m8] = m8
28
+ instance[:m12] = m12
29
+ instance[:m1] = m1
30
+ instance[:m5] = m5
31
+ instance[:m9] = m9
32
+ instance[:m13] = m13
33
+ instance[:m2] = m2
34
+ instance[:m6] = m6
35
+ instance[:m10] = m10
36
+ instance[:m14] = m14
37
+ instance[:m3] = m3
38
+ instance[:m7] = m7
39
+ instance[:m11] = m11
40
+ instance[:m15] = m15
41
+ end
42
+ end
43
+
44
+ def to_s
45
+ "Raylib::Matrix##{object_id} m0=#{m0} m4=#{m4} m8=#{m8} m12=#{m12} m1=#{m1} m5=#{m5} m9=#{m9} m13=#{m13} m2=#{m2} m6=#{m6} m10=#{m10} m14=#{m14} m3=#{m3} m7=#{m7} m11=#{m11} m15=#{m15}"
46
+ end
47
+
48
+ # Matrix first row (4 components)
49
+ # @return [Float] m0
50
+ def m0 = self[:m0]
51
+
52
+ # Sets Matrix first row (4 components)
53
+ def m0=(new_m0)
54
+ self[:m0] = new_m0
55
+ end
56
+
57
+ # Matrix first row (4 components)
58
+ # @return [Float] m4
59
+ def m4 = self[:m4]
60
+
61
+ # Sets Matrix first row (4 components)
62
+ def m4=(new_m4)
63
+ self[:m4] = new_m4
64
+ end
65
+
66
+ # Matrix first row (4 components)
67
+ # @return [Float] m8
68
+ def m8 = self[:m8]
69
+
70
+ # Sets Matrix first row (4 components)
71
+ def m8=(new_m8)
72
+ self[:m8] = new_m8
73
+ end
74
+
75
+ # Matrix first row (4 components)
76
+ # @return [Float] m12
77
+ def m12 = self[:m12]
78
+
79
+ # Sets Matrix first row (4 components)
80
+ def m12=(new_m12)
81
+ self[:m12] = new_m12
82
+ end
83
+
84
+ # Matrix second row (4 components)
85
+ # @return [Float] m1
86
+ def m1 = self[:m1]
87
+
88
+ # Sets Matrix second row (4 components)
89
+ def m1=(new_m1)
90
+ self[:m1] = new_m1
91
+ end
92
+
93
+ # Matrix second row (4 components)
94
+ # @return [Float] m5
95
+ def m5 = self[:m5]
96
+
97
+ # Sets Matrix second row (4 components)
98
+ def m5=(new_m5)
99
+ self[:m5] = new_m5
100
+ end
101
+
102
+ # Matrix second row (4 components)
103
+ # @return [Float] m9
104
+ def m9 = self[:m9]
105
+
106
+ # Sets Matrix second row (4 components)
107
+ def m9=(new_m9)
108
+ self[:m9] = new_m9
109
+ end
110
+
111
+ # Matrix second row (4 components)
112
+ # @return [Float] m13
113
+ def m13 = self[:m13]
114
+
115
+ # Sets Matrix second row (4 components)
116
+ def m13=(new_m13)
117
+ self[:m13] = new_m13
118
+ end
119
+
120
+ # Matrix third row (4 components)
121
+ # @return [Float] m2
122
+ def m2 = self[:m2]
123
+
124
+ # Sets Matrix third row (4 components)
125
+ def m2=(new_m2)
126
+ self[:m2] = new_m2
127
+ end
128
+
129
+ # Matrix third row (4 components)
130
+ # @return [Float] m6
131
+ def m6 = self[:m6]
132
+
133
+ # Sets Matrix third row (4 components)
134
+ def m6=(new_m6)
135
+ self[:m6] = new_m6
136
+ end
137
+
138
+ # Matrix third row (4 components)
139
+ # @return [Float] m10
140
+ def m10 = self[:m10]
141
+
142
+ # Sets Matrix third row (4 components)
143
+ def m10=(new_m10)
144
+ self[:m10] = new_m10
145
+ end
146
+
147
+ # Matrix third row (4 components)
148
+ # @return [Float] m14
149
+ def m14 = self[:m14]
150
+
151
+ # Sets Matrix third row (4 components)
152
+ def m14=(new_m14)
153
+ self[:m14] = new_m14
154
+ end
155
+
156
+ # Matrix fourth row (4 components)
157
+ # @return [Float] m3
158
+ def m3 = self[:m3]
159
+
160
+ # Sets Matrix fourth row (4 components)
161
+ def m3=(new_m3)
162
+ self[:m3] = new_m3
163
+ end
164
+
165
+ # Matrix fourth row (4 components)
166
+ # @return [Float] m7
167
+ def m7 = self[:m7]
168
+
169
+ # Sets Matrix fourth row (4 components)
170
+ def m7=(new_m7)
171
+ self[:m7] = new_m7
172
+ end
173
+
174
+ # Matrix fourth row (4 components)
175
+ # @return [Float] m11
176
+ def m11 = self[:m11]
177
+
178
+ # Sets Matrix fourth row (4 components)
179
+ def m11=(new_m11)
180
+ self[:m11] = new_m11
181
+ end
182
+
183
+ # Matrix fourth row (4 components)
184
+ # @return [Float] m15
185
+ def m15 = self[:m15]
186
+
187
+ # Sets Matrix fourth row (4 components)
188
+ def m15=(new_m15)
189
+ self[:m15] = new_m15
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,181 @@
1
+ module Raylib
2
+ # Mesh, vertex data and vao/vbo
3
+ class Mesh < FFI::Struct
4
+ layout(
5
+ :vertexCount, :int, # Number of vertices stored in arrays,
6
+ :triangleCount, :int, # Number of triangles stored (indexed or not),
7
+ :vertices, :pointer, # Vertex position (XYZ - 3 components per vertex) (shader-location = 0),
8
+ :texcoords, :pointer, # Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1),
9
+ :texcoords2, :pointer, # Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5),
10
+ :normals, :pointer, # Vertex normals (XYZ - 3 components per vertex) (shader-location = 2),
11
+ :tangents, :pointer, # Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4),
12
+ :colors, :pointer, # Vertex colors (RGBA - 4 components per vertex) (shader-location = 3),
13
+ :indices, :pointer, # Vertex indices (in case vertex data comes indexed),
14
+ :animVertices, :pointer, # Animated vertex positions (after bones transformations),
15
+ :animNormals, :pointer, # Animated normals (after bones transformations),
16
+ :boneIds, :pointer, # Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning),
17
+ :boneWeights, :pointer, # Vertex bone weight, up to 4 bones influence by vertex (skinning),
18
+ :vaoId, :uint, # OpenGL Vertex Array Object id,
19
+ :vboId, :pointer, # OpenGL Vertex Buffer Objects id (default vertex data)
20
+ )
21
+
22
+ def self.create(vertex_count, triangle_count, vertices, texcoords, texcoords2, normals, tangents, colors, indices, anim_vertices, anim_normals, bone_ids, bone_weights, vao_id, vbo_id)
23
+ new.tap do |instance|
24
+ instance[:vertexCount] = vertex_count
25
+ instance[:triangleCount] = triangle_count
26
+ instance[:vertices] = vertices
27
+ instance[:texcoords] = texcoords
28
+ instance[:texcoords2] = texcoords2
29
+ instance[:normals] = normals
30
+ instance[:tangents] = tangents
31
+ instance[:colors] = colors
32
+ instance[:indices] = indices
33
+ instance[:animVertices] = anim_vertices
34
+ instance[:animNormals] = anim_normals
35
+ instance[:boneIds] = bone_ids
36
+ instance[:boneWeights] = bone_weights
37
+ instance[:vaoId] = vao_id
38
+ instance[:vboId] = vbo_id
39
+ end
40
+ end
41
+
42
+ def to_s
43
+ "Raylib::Mesh##{object_id} vertex_count=#{vertex_count} triangle_count=#{triangle_count} vertices=#{vertices} texcoords=#{texcoords} texcoords2=#{texcoords2} normals=#{normals} tangents=#{tangents} colors=#{colors} indices=#{indices} anim_vertices=#{anim_vertices} anim_normals=#{anim_normals} bone_ids=#{bone_ids} bone_weights=#{bone_weights} vao_id=#{vao_id} vbo_id=#{vbo_id}"
44
+ end
45
+
46
+ # Number of vertices stored in arrays
47
+ # @return [Integer] vertexCount
48
+ def vertex_count = self[:vertexCount]
49
+
50
+ # Sets Number of vertices stored in arrays
51
+ def vertex_count=(new_vertex_count)
52
+ self[:vertexCount] = new_vertex_count
53
+ end
54
+
55
+ # Number of triangles stored (indexed or not)
56
+ # @return [Integer] triangleCount
57
+ def triangle_count = self[:triangleCount]
58
+
59
+ # Sets Number of triangles stored (indexed or not)
60
+ def triangle_count=(new_triangle_count)
61
+ self[:triangleCount] = new_triangle_count
62
+ end
63
+
64
+ # Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
65
+ # @return [float *] vertices
66
+ def vertices = self[:vertices]
67
+
68
+ # Sets Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
69
+ def vertices=(new_vertices)
70
+ self[:vertices] = new_vertices
71
+ end
72
+
73
+ # Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
74
+ # @return [float *] texcoords
75
+ def texcoords = self[:texcoords]
76
+
77
+ # Sets Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
78
+ def texcoords=(new_texcoords)
79
+ self[:texcoords] = new_texcoords
80
+ end
81
+
82
+ # Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)
83
+ # @return [float *] texcoords2
84
+ def texcoords2 = self[:texcoords2]
85
+
86
+ # Sets Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)
87
+ def texcoords2=(new_texcoords2)
88
+ self[:texcoords2] = new_texcoords2
89
+ end
90
+
91
+ # Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
92
+ # @return [float *] normals
93
+ def normals = self[:normals]
94
+
95
+ # Sets Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
96
+ def normals=(new_normals)
97
+ self[:normals] = new_normals
98
+ end
99
+
100
+ # Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
101
+ # @return [float *] tangents
102
+ def tangents = self[:tangents]
103
+
104
+ # Sets Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
105
+ def tangents=(new_tangents)
106
+ self[:tangents] = new_tangents
107
+ end
108
+
109
+ # Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
110
+ # @return [unsigned char *] colors
111
+ def colors = self[:colors]
112
+
113
+ # Sets Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
114
+ def colors=(new_colors)
115
+ self[:colors] = new_colors
116
+ end
117
+
118
+ # Vertex indices (in case vertex data comes indexed)
119
+ # @return [unsigned short *] indices
120
+ def indices = self[:indices]
121
+
122
+ # Sets Vertex indices (in case vertex data comes indexed)
123
+ def indices=(new_indices)
124
+ self[:indices] = new_indices
125
+ end
126
+
127
+ # Animated vertex positions (after bones transformations)
128
+ # @return [float *] animVertices
129
+ def anim_vertices = self[:animVertices]
130
+
131
+ # Sets Animated vertex positions (after bones transformations)
132
+ def anim_vertices=(new_anim_vertices)
133
+ self[:animVertices] = new_anim_vertices
134
+ end
135
+
136
+ # Animated normals (after bones transformations)
137
+ # @return [float *] animNormals
138
+ def anim_normals = self[:animNormals]
139
+
140
+ # Sets Animated normals (after bones transformations)
141
+ def anim_normals=(new_anim_normals)
142
+ self[:animNormals] = new_anim_normals
143
+ end
144
+
145
+ # Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning)
146
+ # @return [unsigned char *] boneIds
147
+ def bone_ids = self[:boneIds]
148
+
149
+ # Sets Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning)
150
+ def bone_ids=(new_bone_ids)
151
+ self[:boneIds] = new_bone_ids
152
+ end
153
+
154
+ # Vertex bone weight, up to 4 bones influence by vertex (skinning)
155
+ # @return [float *] boneWeights
156
+ def bone_weights = self[:boneWeights]
157
+
158
+ # Sets Vertex bone weight, up to 4 bones influence by vertex (skinning)
159
+ def bone_weights=(new_bone_weights)
160
+ self[:boneWeights] = new_bone_weights
161
+ end
162
+
163
+ # OpenGL Vertex Array Object id
164
+ # @return [Integer] vaoId
165
+ def vao_id = self[:vaoId]
166
+
167
+ # Sets OpenGL Vertex Array Object id
168
+ def vao_id=(new_vao_id)
169
+ self[:vaoId] = new_vao_id
170
+ end
171
+
172
+ # OpenGL Vertex Buffer Objects id (default vertex data)
173
+ # @return [unsigned int *] vboId
174
+ def vbo_id = self[:vboId]
175
+
176
+ # Sets OpenGL Vertex Buffer Objects id (default vertex data)
177
+ def vbo_id=(new_vbo_id)
178
+ self[:vboId] = new_vbo_id
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,115 @@
1
+ module Raylib
2
+ # Model, meshes, materials and animation data
3
+ class Model < FFI::Struct
4
+ layout(
5
+ :transform, Matrix, # Local transform matrix,
6
+ :meshCount, :int, # Number of meshes,
7
+ :materialCount, :int, # Number of materials,
8
+ :meshes, :pointer, # Meshes array,
9
+ :materials, :pointer, # Materials array,
10
+ :meshMaterial, :pointer, # Mesh material number,
11
+ :boneCount, :int, # Number of bones,
12
+ :bones, :pointer, # Bones information (skeleton),
13
+ :bindPose, :pointer, # Bones base transformation (pose)
14
+ )
15
+
16
+ def self.create(transform, mesh_count, material_count, meshes, materials, mesh_material, bone_count, bones, bind_pose)
17
+ new.tap do |instance|
18
+ instance[:transform] = transform
19
+ instance[:meshCount] = mesh_count
20
+ instance[:materialCount] = material_count
21
+ instance[:meshes] = meshes
22
+ instance[:materials] = materials
23
+ instance[:meshMaterial] = mesh_material
24
+ instance[:boneCount] = bone_count
25
+ instance[:bones] = bones
26
+ instance[:bindPose] = bind_pose
27
+ end
28
+ end
29
+
30
+ def to_s
31
+ "Raylib::Model##{object_id} transform=#{transform} mesh_count=#{mesh_count} material_count=#{material_count} meshes=#{meshes} materials=#{materials} mesh_material=#{mesh_material} bone_count=#{bone_count} bones=#{bones} bind_pose=#{bind_pose}"
32
+ end
33
+
34
+ # Local transform matrix
35
+ # @return [Matrix] transform
36
+ def transform = self[:transform]
37
+
38
+ # Sets Local transform matrix
39
+ def transform=(new_transform)
40
+ self[:transform] = new_transform
41
+ end
42
+
43
+ # Number of meshes
44
+ # @return [Integer] meshCount
45
+ def mesh_count = self[:meshCount]
46
+
47
+ # Sets Number of meshes
48
+ def mesh_count=(new_mesh_count)
49
+ self[:meshCount] = new_mesh_count
50
+ end
51
+
52
+ # Number of materials
53
+ # @return [Integer] materialCount
54
+ def material_count = self[:materialCount]
55
+
56
+ # Sets Number of materials
57
+ def material_count=(new_material_count)
58
+ self[:materialCount] = new_material_count
59
+ end
60
+
61
+ # Meshes array
62
+ # @return [Mesh *] meshes
63
+ def meshes = self[:meshes]
64
+
65
+ # Sets Meshes array
66
+ def meshes=(new_meshes)
67
+ self[:meshes] = new_meshes
68
+ end
69
+
70
+ # Materials array
71
+ # @return [Material *] materials
72
+ def materials = self[:materials]
73
+
74
+ # Sets Materials array
75
+ def materials=(new_materials)
76
+ self[:materials] = new_materials
77
+ end
78
+
79
+ # Mesh material number
80
+ # @return [int *] meshMaterial
81
+ def mesh_material = self[:meshMaterial]
82
+
83
+ # Sets Mesh material number
84
+ def mesh_material=(new_mesh_material)
85
+ self[:meshMaterial] = new_mesh_material
86
+ end
87
+
88
+ # Number of bones
89
+ # @return [Integer] boneCount
90
+ def bone_count = self[:boneCount]
91
+
92
+ # Sets Number of bones
93
+ def bone_count=(new_bone_count)
94
+ self[:boneCount] = new_bone_count
95
+ end
96
+
97
+ # Bones information (skeleton)
98
+ # @return [BoneInfo *] bones
99
+ def bones = self[:bones]
100
+
101
+ # Sets Bones information (skeleton)
102
+ def bones=(new_bones)
103
+ self[:bones] = new_bones
104
+ end
105
+
106
+ # Bones base transformation (pose)
107
+ # @return [Transform *] bindPose
108
+ def bind_pose = self[:bindPose]
109
+
110
+ # Sets Bones base transformation (pose)
111
+ def bind_pose=(new_bind_pose)
112
+ self[:bindPose] = new_bind_pose
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,60 @@
1
+ module Raylib
2
+ # ModelAnimation
3
+ class ModelAnimation < FFI::Struct
4
+ layout(
5
+ :boneCount, :int, # Number of bones,
6
+ :frameCount, :int, # Number of animation frames,
7
+ :bones, :pointer, # Bones information (skeleton),
8
+ :framePoses, :pointer, # Poses array by frame
9
+ )
10
+
11
+ def self.create(bone_count, frame_count, bones, frame_poses)
12
+ new.tap do |instance|
13
+ instance[:boneCount] = bone_count
14
+ instance[:frameCount] = frame_count
15
+ instance[:bones] = bones
16
+ instance[:framePoses] = frame_poses
17
+ end
18
+ end
19
+
20
+ def to_s
21
+ "Raylib::ModelAnimation##{object_id} bone_count=#{bone_count} frame_count=#{frame_count} bones=#{bones} frame_poses=#{frame_poses}"
22
+ end
23
+
24
+ # Number of bones
25
+ # @return [Integer] boneCount
26
+ def bone_count = self[:boneCount]
27
+
28
+ # Sets Number of bones
29
+ def bone_count=(new_bone_count)
30
+ self[:boneCount] = new_bone_count
31
+ end
32
+
33
+ # Number of animation frames
34
+ # @return [Integer] frameCount
35
+ def frame_count = self[:frameCount]
36
+
37
+ # Sets Number of animation frames
38
+ def frame_count=(new_frame_count)
39
+ self[:frameCount] = new_frame_count
40
+ end
41
+
42
+ # Bones information (skeleton)
43
+ # @return [BoneInfo *] bones
44
+ def bones = self[:bones]
45
+
46
+ # Sets Bones information (skeleton)
47
+ def bones=(new_bones)
48
+ self[:bones] = new_bones
49
+ end
50
+
51
+ # Poses array by frame
52
+ # @return [Transform **] framePoses
53
+ def frame_poses = self[:framePoses]
54
+
55
+ # Sets Poses array by frame
56
+ def frame_poses=(new_frame_poses)
57
+ self[:framePoses] = new_frame_poses
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,71 @@
1
+ module Raylib
2
+ # Music, audio stream, anything longer than ~10 seconds should be streamed
3
+ class Music < FFI::Struct
4
+ layout(
5
+ :stream, AudioStream, # Audio stream,
6
+ :frameCount, :uint, # Total number of frames (considering channels),
7
+ :looping, :bool, # Music looping enable,
8
+ :ctxType, :int, # Type of music context (audio filetype),
9
+ :ctxData, :pointer, # Audio context data, depends on type
10
+ )
11
+
12
+ def self.create(stream, frame_count, looping, ctx_type, ctx_data)
13
+ new.tap do |instance|
14
+ instance[:stream] = stream
15
+ instance[:frameCount] = frame_count
16
+ instance[:looping] = looping
17
+ instance[:ctxType] = ctx_type
18
+ instance[:ctxData] = ctx_data
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "Raylib::Music##{object_id} stream=#{stream} frame_count=#{frame_count} looping=#{looping} ctx_type=#{ctx_type} ctx_data=#{ctx_data}"
24
+ end
25
+
26
+ # Audio stream
27
+ # @return [AudioStream] stream
28
+ def stream = self[:stream]
29
+
30
+ # Sets Audio stream
31
+ def stream=(new_stream)
32
+ self[:stream] = new_stream
33
+ end
34
+
35
+ # Total number of frames (considering channels)
36
+ # @return [Integer] frameCount
37
+ def frame_count = self[:frameCount]
38
+
39
+ # Sets Total number of frames (considering channels)
40
+ def frame_count=(new_frame_count)
41
+ self[:frameCount] = new_frame_count
42
+ end
43
+
44
+ # Music looping enable
45
+ # @return [bool] looping
46
+ def looping = self[:looping]
47
+
48
+ # Sets Music looping enable
49
+ def looping=(new_looping)
50
+ self[:looping] = new_looping
51
+ end
52
+
53
+ # Type of music context (audio filetype)
54
+ # @return [Integer] ctxType
55
+ def ctx_type = self[:ctxType]
56
+
57
+ # Sets Type of music context (audio filetype)
58
+ def ctx_type=(new_ctx_type)
59
+ self[:ctxType] = new_ctx_type
60
+ end
61
+
62
+ # Audio context data, depends on type
63
+ # @return [void *] ctxData
64
+ def ctx_data = self[:ctxData]
65
+
66
+ # Sets Audio context data, depends on type
67
+ def ctx_data=(new_ctx_data)
68
+ self[:ctxData] = new_ctx_data
69
+ end
70
+ end
71
+ end