diff options
Diffstat (limited to 'app/ECS/component_manager.rb')
| -rw-r--r-- | app/ECS/component_manager.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/ECS/component_manager.rb b/app/ECS/component_manager.rb new file mode 100644 index 0000000..e64bc21 --- /dev/null +++ b/app/ECS/component_manager.rb @@ -0,0 +1,20 @@ +require_relative './base_component' +Dir[File.join(__dir__, 'components', '*.rb')].sort.each { |file| require file } + +class ECS + class Components + class <<self + def entity_destroyed(entity_id) + constants.each do |component| + component.delete(entity_id) unless (component.id & ECS::Entity.signatures[entity_id]).zero? + end + end + + def entity_created(entity_id) + constants.each do |component| + const_get(component.to_s).add(entity_id) unless (const_get(component.to_s).id & ECS::Entity.signatures[entity_id]).zero? + end + end + end + end +end |
