bevy 1.0.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.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/Cargo.lock +4279 -0
  3. data/Cargo.toml +36 -0
  4. data/README.md +226 -0
  5. data/crates/bevy/Cargo.toml +52 -0
  6. data/crates/bevy/src/app.rs +43 -0
  7. data/crates/bevy/src/component.rs +111 -0
  8. data/crates/bevy/src/entity.rs +30 -0
  9. data/crates/bevy/src/error.rs +32 -0
  10. data/crates/bevy/src/event.rs +190 -0
  11. data/crates/bevy/src/input_bridge.rs +300 -0
  12. data/crates/bevy/src/lib.rs +42 -0
  13. data/crates/bevy/src/mesh_renderer.rs +328 -0
  14. data/crates/bevy/src/query.rs +53 -0
  15. data/crates/bevy/src/render_app.rs +689 -0
  16. data/crates/bevy/src/resource.rs +28 -0
  17. data/crates/bevy/src/schedule.rs +186 -0
  18. data/crates/bevy/src/sprite_renderer.rs +355 -0
  19. data/crates/bevy/src/system.rs +44 -0
  20. data/crates/bevy/src/text_renderer.rs +258 -0
  21. data/crates/bevy/src/types/color.rs +114 -0
  22. data/crates/bevy/src/types/dynamic.rs +131 -0
  23. data/crates/bevy/src/types/math.rs +260 -0
  24. data/crates/bevy/src/types/mod.rs +9 -0
  25. data/crates/bevy/src/types/transform.rs +166 -0
  26. data/crates/bevy/src/world.rs +163 -0
  27. data/crates/bevy_ruby_render/Cargo.toml +22 -0
  28. data/crates/bevy_ruby_render/src/asset.rs +360 -0
  29. data/crates/bevy_ruby_render/src/audio.rs +511 -0
  30. data/crates/bevy_ruby_render/src/camera.rs +365 -0
  31. data/crates/bevy_ruby_render/src/gamepad.rs +398 -0
  32. data/crates/bevy_ruby_render/src/lib.rs +26 -0
  33. data/crates/bevy_ruby_render/src/material.rs +310 -0
  34. data/crates/bevy_ruby_render/src/mesh.rs +491 -0
  35. data/crates/bevy_ruby_render/src/sprite.rs +289 -0
  36. data/ext/bevy/Cargo.toml +20 -0
  37. data/ext/bevy/extconf.rb +6 -0
  38. data/ext/bevy/src/conversions.rs +137 -0
  39. data/ext/bevy/src/lib.rs +29 -0
  40. data/ext/bevy/src/ruby_app.rs +65 -0
  41. data/ext/bevy/src/ruby_color.rs +149 -0
  42. data/ext/bevy/src/ruby_component.rs +189 -0
  43. data/ext/bevy/src/ruby_entity.rs +33 -0
  44. data/ext/bevy/src/ruby_math.rs +384 -0
  45. data/ext/bevy/src/ruby_query.rs +64 -0
  46. data/ext/bevy/src/ruby_render_app.rs +779 -0
  47. data/ext/bevy/src/ruby_system.rs +122 -0
  48. data/ext/bevy/src/ruby_world.rs +107 -0
  49. data/lib/bevy/animation.rb +597 -0
  50. data/lib/bevy/app.rb +675 -0
  51. data/lib/bevy/asset.rb +613 -0
  52. data/lib/bevy/audio.rb +545 -0
  53. data/lib/bevy/audio_effects.rb +224 -0
  54. data/lib/bevy/camera.rb +412 -0
  55. data/lib/bevy/component.rb +91 -0
  56. data/lib/bevy/diagnostics.rb +227 -0
  57. data/lib/bevy/ecs_advanced.rb +296 -0
  58. data/lib/bevy/event.rb +199 -0
  59. data/lib/bevy/gizmos.rb +158 -0
  60. data/lib/bevy/gltf.rb +227 -0
  61. data/lib/bevy/hierarchy.rb +444 -0
  62. data/lib/bevy/input.rb +514 -0
  63. data/lib/bevy/lighting.rb +369 -0
  64. data/lib/bevy/material.rb +248 -0
  65. data/lib/bevy/mesh.rb +257 -0
  66. data/lib/bevy/navigation.rb +344 -0
  67. data/lib/bevy/networking.rb +335 -0
  68. data/lib/bevy/particle.rb +337 -0
  69. data/lib/bevy/physics.rb +396 -0
  70. data/lib/bevy/plugins/default_plugins.rb +34 -0
  71. data/lib/bevy/plugins/input_plugin.rb +49 -0
  72. data/lib/bevy/reflect.rb +361 -0
  73. data/lib/bevy/render_graph.rb +210 -0
  74. data/lib/bevy/resource.rb +185 -0
  75. data/lib/bevy/scene.rb +254 -0
  76. data/lib/bevy/shader.rb +319 -0
  77. data/lib/bevy/shape.rb +195 -0
  78. data/lib/bevy/skeletal.rb +248 -0
  79. data/lib/bevy/sprite.rb +152 -0
  80. data/lib/bevy/sprite_sheet.rb +444 -0
  81. data/lib/bevy/state.rb +277 -0
  82. data/lib/bevy/system.rb +206 -0
  83. data/lib/bevy/text.rb +99 -0
  84. data/lib/bevy/text_advanced.rb +455 -0
  85. data/lib/bevy/timer.rb +147 -0
  86. data/lib/bevy/transform.rb +158 -0
  87. data/lib/bevy/ui.rb +454 -0
  88. data/lib/bevy/ui_advanced.rb +568 -0
  89. data/lib/bevy/version.rb +5 -0
  90. data/lib/bevy/visibility.rb +250 -0
  91. data/lib/bevy/window.rb +302 -0
  92. data/lib/bevy.rb +390 -0
  93. metadata +150 -0
data/lib/bevy.rb ADDED
@@ -0,0 +1,390 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'bevy/version'
4
+
5
+ begin
6
+ require "bevy/#{RUBY_VERSION.to_f}/bevy"
7
+ rescue LoadError
8
+ require_relative 'bevy/bevy'
9
+ end
10
+
11
+ require_relative 'bevy/component'
12
+ require_relative 'bevy/transform'
13
+ require_relative 'bevy/camera'
14
+ require_relative 'bevy/material'
15
+ require_relative 'bevy/sprite'
16
+ require_relative 'bevy/sprite_sheet'
17
+ require_relative 'bevy/input'
18
+ require_relative 'bevy/audio'
19
+ require_relative 'bevy/asset'
20
+ require_relative 'bevy/resource'
21
+ require_relative 'bevy/event'
22
+ require_relative 'bevy/timer'
23
+ require_relative 'bevy/shape'
24
+ require_relative 'bevy/mesh'
25
+ require_relative 'bevy/text'
26
+ require_relative 'bevy/text_advanced'
27
+ require_relative 'bevy/ui'
28
+ require_relative 'bevy/ui_advanced'
29
+ require_relative 'bevy/state'
30
+ require_relative 'bevy/animation'
31
+ require_relative 'bevy/lighting'
32
+ require_relative 'bevy/scene'
33
+ require_relative 'bevy/gltf'
34
+ require_relative 'bevy/physics'
35
+ require_relative 'bevy/window'
36
+ require_relative 'bevy/shader'
37
+ require_relative 'bevy/particle'
38
+ require_relative 'bevy/system'
39
+ require_relative 'bevy/reflect'
40
+ require_relative 'bevy/render_graph'
41
+ require_relative 'bevy/gizmos'
42
+ require_relative 'bevy/diagnostics'
43
+ require_relative 'bevy/visibility'
44
+ require_relative 'bevy/skeletal'
45
+ require_relative 'bevy/audio_effects'
46
+ require_relative 'bevy/ecs_advanced'
47
+ require_relative 'bevy/navigation'
48
+ require_relative 'bevy/networking'
49
+ require_relative 'bevy/hierarchy'
50
+ require_relative 'bevy/app'
51
+ require_relative 'bevy/plugins/default_plugins'
52
+ require_relative 'bevy/plugins/input_plugin'
53
+
54
+ module Bevy
55
+ class Error < StandardError; end
56
+
57
+ class EntityNotFoundError < Error; end
58
+
59
+ class ComponentNotFoundError < Error; end
60
+
61
+ class ComponentAlreadyExistsError < Error; end
62
+
63
+ class ResourceNotFoundError < Error; end
64
+
65
+ class ResourceAlreadyExistsError < Error; end
66
+
67
+ class SystemError < Error; end
68
+
69
+ class InvalidSystemParamError < SystemError; end
70
+
71
+ class ConversionError < Error; end
72
+
73
+ class InvalidTypeError < ConversionError; end
74
+
75
+ class World
76
+ MESH_CLASSES = [
77
+ Mesh::Rectangle, Mesh::Circle, Mesh::RegularPolygon,
78
+ Mesh::Triangle, Mesh::Hexagon, Mesh::Line, Mesh::Ellipse
79
+ ].freeze
80
+
81
+ HIERARCHY_CLASSES = [
82
+ Parent, Children, GlobalTransform, Visibility, InheritedVisibility, ViewVisibility
83
+ ].freeze
84
+
85
+ def initialize
86
+ @despawned_entity_ids = []
87
+ @mesh_components = {}
88
+ @hierarchy_components = {}
89
+ end
90
+
91
+ def spawn_entity(*components)
92
+ mesh_comps, rest = components.partition { |c| mesh_component?(c) }
93
+ hier_comps, native_comps = rest.partition { |c| hierarchy_component?(c) }
94
+
95
+ entity = if native_comps.empty?
96
+ spawn
97
+ else
98
+ native_components = native_comps.map { |comp| component_to_native(comp) }
99
+ spawn_with(native_components)
100
+ end
101
+
102
+ if mesh_comps.any?
103
+ mesh_entities[entity.id] = entity
104
+ mesh_comps.each do |mesh|
105
+ mesh_components[entity.id] ||= {}
106
+ mesh_components[entity.id][mesh.type_name] = mesh
107
+ end
108
+ end
109
+
110
+ if hier_comps.any?
111
+ hierarchy_entities[entity.id] = entity
112
+ hier_comps.each do |hier|
113
+ hierarchy_components[entity.id] ||= {}
114
+ hierarchy_components[entity.id][hier.type_name] = hier
115
+ end
116
+ end
117
+
118
+ entity
119
+ end
120
+
121
+ def hierarchy_component?(comp)
122
+ HIERARCHY_CLASSES.any? { |klass| comp.is_a?(klass) }
123
+ end
124
+
125
+ def hierarchy_components
126
+ @hierarchy_components ||= {}
127
+ end
128
+
129
+ def hierarchy_entities
130
+ @hierarchy_entities ||= {}
131
+ end
132
+
133
+ def despawn(entity)
134
+ entity_id = entity.id
135
+ despawn_native(entity)
136
+ despawned_entity_ids << entity_id
137
+ mesh_components.delete(entity_id)
138
+ mesh_entities.delete(entity_id)
139
+ hierarchy_components.delete(entity_id)
140
+ hierarchy_entities.delete(entity_id)
141
+ true
142
+ rescue StandardError
143
+ false
144
+ end
145
+
146
+ def mesh_component?(comp)
147
+ MESH_CLASSES.any? { |klass| comp.is_a?(klass) }
148
+ end
149
+
150
+ def mesh_components
151
+ @mesh_components ||= {}
152
+ end
153
+
154
+ def mesh_entities
155
+ @mesh_entities ||= {}
156
+ end
157
+
158
+ def despawned_entity_ids
159
+ @despawned_entity_ids ||= []
160
+ end
161
+
162
+ def clear_despawned_entity_ids
163
+ @despawned_entity_ids = []
164
+ end
165
+
166
+ def insert_component(entity, component)
167
+ if hierarchy_component?(component)
168
+ hierarchy_entities[entity.id] = entity
169
+ hierarchy_components[entity.id] ||= {}
170
+ hierarchy_components[entity.id][component.type_name] = component
171
+ elsif mesh_component?(component)
172
+ mesh_entities[entity.id] = entity
173
+ mesh_components[entity.id] ||= {}
174
+ mesh_components[entity.id][component.type_name] = component
175
+ else
176
+ native = component_to_native(component)
177
+ insert(entity, native)
178
+ end
179
+ end
180
+
181
+ def remove_component(entity, component_class)
182
+ type_name = component_type_name(component_class)
183
+
184
+ if HIERARCHY_CLASSES.include?(component_class)
185
+ hier = hierarchy_components[entity.id]
186
+ return nil unless hier
187
+
188
+ return hier.delete(type_name)
189
+ end
190
+
191
+ if MESH_CLASSES.include?(component_class)
192
+ mesh = mesh_components[entity.id]
193
+ return nil unless mesh
194
+
195
+ return mesh.delete(type_name)
196
+ end
197
+
198
+ begin
199
+ remove(entity, type_name)
200
+ rescue StandardError
201
+ nil
202
+ end
203
+ end
204
+
205
+ def get_component(entity, component_class)
206
+ type_name = component_type_name(component_class)
207
+
208
+ if HIERARCHY_CLASSES.include?(component_class)
209
+ hier = hierarchy_components[entity.id]
210
+ raise ComponentNotFoundError, "Component #{type_name} not found" unless hier && hier[type_name]
211
+
212
+ return hier[type_name]
213
+ end
214
+
215
+ if MESH_CLASSES.include?(component_class)
216
+ mesh = mesh_components[entity.id]
217
+ raise ComponentNotFoundError, "Component #{type_name} not found" unless mesh && mesh[type_name]
218
+
219
+ return mesh[type_name]
220
+ end
221
+
222
+ native = get(entity, type_name)
223
+
224
+ case component_class
225
+ when ->(c) { c == Transform }
226
+ Transform.from_native(native)
227
+ when ->(c) { c == Camera2d }
228
+ Camera2d.from_native(native)
229
+ when ->(c) { c == Camera3d }
230
+ Camera3d.from_native(native)
231
+ when ->(c) { c == Sprite }
232
+ Sprite.from_native(native)
233
+ when ->(c) { c == Text2d }
234
+ Text2d.from_native(native)
235
+ when ->(c) { c == AudioPlayer }
236
+ AudioPlayer.from_native(native)
237
+ when ->(c) { c == SpatialAudioSettings }
238
+ SpatialAudioSettings.from_native(native)
239
+ when ->(c) { c.is_a?(Class) && c < ComponentDSL }
240
+ instance = component_class.allocate
241
+ instance.instance_variable_set(:@data, {})
242
+ component_class.attributes.each_key do |key|
243
+ instance.instance_variable_get(:@data)[key] = native[key.to_s]
244
+ end
245
+ instance
246
+ else
247
+ native
248
+ end
249
+ end
250
+
251
+ def has?(entity, component_class)
252
+ type_name = component_type_name(component_class)
253
+ has_component?(entity, type_name)
254
+ end
255
+
256
+ def each(*component_classes, &block)
257
+ mesh_classes, native_classes = component_classes.partition { |cc| MESH_CLASSES.include?(cc) }
258
+
259
+ if mesh_classes.any?
260
+ each_with_mesh(component_classes, mesh_classes, native_classes, &block)
261
+ else
262
+ type_names = native_classes.map { |cc| component_type_name(cc) }
263
+ entities = query(type_names)
264
+
265
+ entities.each do |entity|
266
+ components = component_classes.map { |cc| get_component(entity, cc) }
267
+ block.call(entity, *components)
268
+ end
269
+ end
270
+ end
271
+
272
+ def each_with_mesh(component_classes, mesh_classes, native_classes, &block)
273
+ @mesh_components.each do |entity_id, meshes|
274
+ mesh_classes.map do |mc|
275
+ mc.new(width: 0, height: 0, radius: 0, sides: 3,
276
+ start_point: Vec2.zero, end_point: Vec2.zero).type_name
277
+ rescue StandardError
278
+ mc.name.split('::').last
279
+ end
280
+
281
+ has_all_meshes = mesh_classes.all? do |mc|
282
+ type_name = component_type_name(mc)
283
+ meshes.key?(type_name)
284
+ end
285
+ next unless has_all_meshes
286
+
287
+ entity = get_entity_by_id(entity_id)
288
+ next unless entity
289
+
290
+ if native_classes.any?
291
+ type_names = native_classes.map { |cc| component_type_name(cc) }
292
+ next unless type_names.all? { |tn| has_component?(entity, tn) }
293
+ end
294
+
295
+ components = component_classes.map do |cc|
296
+ type_name = component_type_name(cc)
297
+ if MESH_CLASSES.include?(cc)
298
+ meshes[type_name]
299
+ else
300
+ get_component(entity, cc)
301
+ end
302
+ end
303
+
304
+ block.call(entity, *components)
305
+ end
306
+ end
307
+
308
+ def get_entity_by_id(entity_id)
309
+ all_entities.find { |e| e.id == entity_id }
310
+ end
311
+
312
+ def all_entities
313
+ @mesh_components.keys.map { |id| entity_from_id(id) }.compact
314
+ end
315
+
316
+ def entity_from_id(entity_id)
317
+ Entity.new(entity_id)
318
+ end
319
+
320
+ private
321
+
322
+ def component_to_native(comp)
323
+ case comp
324
+ when ComponentDSL then comp.to_native
325
+ when Transform then comp.to_native
326
+ when Camera2d then comp.to_native
327
+ when Camera3d then comp.to_native
328
+ when Sprite then comp.to_native
329
+ when Text2d then comp.to_native
330
+ when AudioPlayer then comp.to_native
331
+ when SpatialAudioSettings then comp.to_native
332
+ when Component then comp
333
+ else
334
+ raise ArgumentError,
335
+ "Expected Component, ComponentDSL, Transform, Camera, Sprite, Text2d, or Audio, got #{comp.class}"
336
+ end
337
+ end
338
+
339
+ def component_type_name(component_class)
340
+ case component_class
341
+ when ->(c) { c == Transform }
342
+ 'Transform'
343
+ when ->(c) { c == Camera2d }
344
+ 'Camera2d'
345
+ when ->(c) { c == Camera3d }
346
+ 'Camera3d'
347
+ when ->(c) { c == Sprite }
348
+ 'Sprite'
349
+ when ->(c) { c == Text2d }
350
+ 'Text2d'
351
+ when ->(c) { c == AudioPlayer }
352
+ 'AudioPlayer'
353
+ when ->(c) { c == SpatialAudioSettings }
354
+ 'SpatialAudioSettings'
355
+ when ->(c) { c == Mesh::Rectangle }
356
+ 'Mesh::Rectangle'
357
+ when ->(c) { c == Mesh::Circle }
358
+ 'Mesh::Circle'
359
+ when ->(c) { c == Mesh::RegularPolygon }
360
+ 'Mesh::RegularPolygon'
361
+ when ->(c) { c == Mesh::Triangle }
362
+ 'Mesh::Triangle'
363
+ when ->(c) { c == Mesh::Hexagon }
364
+ 'Mesh::Hexagon'
365
+ when ->(c) { c == Mesh::Line }
366
+ 'Mesh::Line'
367
+ when ->(c) { c == Mesh::Ellipse }
368
+ 'Mesh::Ellipse'
369
+ when ->(c) { c == Parent }
370
+ 'Parent'
371
+ when ->(c) { c == Children }
372
+ 'Children'
373
+ when ->(c) { c == GlobalTransform }
374
+ 'GlobalTransform'
375
+ when ->(c) { c == Visibility }
376
+ 'Visibility'
377
+ when ->(c) { c == InheritedVisibility }
378
+ 'InheritedVisibility'
379
+ when ->(c) { c == ViewVisibility }
380
+ 'ViewVisibility'
381
+ when ->(c) { c.is_a?(Class) && c < ComponentDSL }
382
+ component_class.component_name
383
+ when String
384
+ component_class
385
+ else
386
+ raise ArgumentError, 'Expected Component class or String'
387
+ end
388
+ end
389
+ end
390
+ end
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bevy
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rb_sys
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0.9'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0.9'
26
+ description: Ruby bindings for Bevy Engine, providing ECS architecture and game development
27
+ capabilities
28
+ email:
29
+ - t.yudai92@gmail.com
30
+ executables: []
31
+ extensions:
32
+ - ext/bevy/extconf.rb
33
+ extra_rdoc_files: []
34
+ files:
35
+ - Cargo.lock
36
+ - Cargo.toml
37
+ - README.md
38
+ - crates/bevy/Cargo.toml
39
+ - crates/bevy/src/app.rs
40
+ - crates/bevy/src/component.rs
41
+ - crates/bevy/src/entity.rs
42
+ - crates/bevy/src/error.rs
43
+ - crates/bevy/src/event.rs
44
+ - crates/bevy/src/input_bridge.rs
45
+ - crates/bevy/src/lib.rs
46
+ - crates/bevy/src/mesh_renderer.rs
47
+ - crates/bevy/src/query.rs
48
+ - crates/bevy/src/render_app.rs
49
+ - crates/bevy/src/resource.rs
50
+ - crates/bevy/src/schedule.rs
51
+ - crates/bevy/src/sprite_renderer.rs
52
+ - crates/bevy/src/system.rs
53
+ - crates/bevy/src/text_renderer.rs
54
+ - crates/bevy/src/types/color.rs
55
+ - crates/bevy/src/types/dynamic.rs
56
+ - crates/bevy/src/types/math.rs
57
+ - crates/bevy/src/types/mod.rs
58
+ - crates/bevy/src/types/transform.rs
59
+ - crates/bevy/src/world.rs
60
+ - crates/bevy_ruby_render/Cargo.toml
61
+ - crates/bevy_ruby_render/src/asset.rs
62
+ - crates/bevy_ruby_render/src/audio.rs
63
+ - crates/bevy_ruby_render/src/camera.rs
64
+ - crates/bevy_ruby_render/src/gamepad.rs
65
+ - crates/bevy_ruby_render/src/lib.rs
66
+ - crates/bevy_ruby_render/src/material.rs
67
+ - crates/bevy_ruby_render/src/mesh.rs
68
+ - crates/bevy_ruby_render/src/sprite.rs
69
+ - ext/bevy/Cargo.toml
70
+ - ext/bevy/extconf.rb
71
+ - ext/bevy/src/conversions.rs
72
+ - ext/bevy/src/lib.rs
73
+ - ext/bevy/src/ruby_app.rs
74
+ - ext/bevy/src/ruby_color.rs
75
+ - ext/bevy/src/ruby_component.rs
76
+ - ext/bevy/src/ruby_entity.rs
77
+ - ext/bevy/src/ruby_math.rs
78
+ - ext/bevy/src/ruby_query.rs
79
+ - ext/bevy/src/ruby_render_app.rs
80
+ - ext/bevy/src/ruby_system.rs
81
+ - ext/bevy/src/ruby_world.rs
82
+ - lib/bevy.rb
83
+ - lib/bevy/animation.rb
84
+ - lib/bevy/app.rb
85
+ - lib/bevy/asset.rb
86
+ - lib/bevy/audio.rb
87
+ - lib/bevy/audio_effects.rb
88
+ - lib/bevy/camera.rb
89
+ - lib/bevy/component.rb
90
+ - lib/bevy/diagnostics.rb
91
+ - lib/bevy/ecs_advanced.rb
92
+ - lib/bevy/event.rb
93
+ - lib/bevy/gizmos.rb
94
+ - lib/bevy/gltf.rb
95
+ - lib/bevy/hierarchy.rb
96
+ - lib/bevy/input.rb
97
+ - lib/bevy/lighting.rb
98
+ - lib/bevy/material.rb
99
+ - lib/bevy/mesh.rb
100
+ - lib/bevy/navigation.rb
101
+ - lib/bevy/networking.rb
102
+ - lib/bevy/particle.rb
103
+ - lib/bevy/physics.rb
104
+ - lib/bevy/plugins/default_plugins.rb
105
+ - lib/bevy/plugins/input_plugin.rb
106
+ - lib/bevy/reflect.rb
107
+ - lib/bevy/render_graph.rb
108
+ - lib/bevy/resource.rb
109
+ - lib/bevy/scene.rb
110
+ - lib/bevy/shader.rb
111
+ - lib/bevy/shape.rb
112
+ - lib/bevy/skeletal.rb
113
+ - lib/bevy/sprite.rb
114
+ - lib/bevy/sprite_sheet.rb
115
+ - lib/bevy/state.rb
116
+ - lib/bevy/system.rb
117
+ - lib/bevy/text.rb
118
+ - lib/bevy/text_advanced.rb
119
+ - lib/bevy/timer.rb
120
+ - lib/bevy/transform.rb
121
+ - lib/bevy/ui.rb
122
+ - lib/bevy/ui_advanced.rb
123
+ - lib/bevy/version.rb
124
+ - lib/bevy/visibility.rb
125
+ - lib/bevy/window.rb
126
+ homepage: https://github.com/ydah/bevy-ruby
127
+ licenses:
128
+ - MIT
129
+ metadata:
130
+ homepage_uri: https://github.com/ydah/bevy-ruby
131
+ source_code_uri: https://github.com/ydah/bevy-ruby
132
+ changelog_uri: https://github.com/ydah/bevy-ruby/blob/main/CHANGELOG.md
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 3.2.0
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubygems_version: 4.0.6
148
+ specification_version: 4
149
+ summary: Ruby bindings for the Bevy game engine
150
+ test_files: []