23 lines
625 B
Crystal
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
|