EntityCoolSystem/src/ecs/component_container.cr

23 lines
625 B
Crystal

module ECS::ComponentContainer
@components = Hash(ECS::Component.class, Array(ECS::Component)).new
getter components
include ECS::World::HasWorldRef
def <<(component : ECS::Component)
puts "world << component = #{component}"
if @components[component.class]?.nil?
@components[component.class] = Array(ECS::Component).new
end
@components[component.class] << component
self
end
def [](comp_class : ECS::Component.class) : Array(ECS::Component)
@components[comp_class]
end
def []?(comp_class : ECS::Component.class) : Array(ECS::Component)?
@components[comp_class]?
end
end