class GameEcs::EntityStore::QueryResultSet

Public Class Methods

new(records:, ids:) click to toggle source
# File lib/game_ecs/entity_store.rb, line 291
def initialize(records:, ids:)
  @records = records
  @ids = Set.new(ids)
end

Public Instance Methods

<<(rec) click to toggle source
# File lib/game_ecs/entity_store.rb, line 295
def <<(rec)
  @ids << rec.id
  @records << rec
end
add_component(id:, component:) click to toggle source
# File lib/game_ecs/entity_store.rb, line 302
def add_component(id:, component:)
  index = @records.index{ |rec| id == rec&.id }
  @records[index].update_component(component) if index >= 0
end
delete(id:nil, ids:nil) click to toggle source
# File lib/game_ecs/entity_store.rb, line 306
def delete(id:nil, ids:nil)
  if id
    @records.delete_at(@records.index{ |rec| id == rec&.id } || @records.size) if @ids.include? id
    @ids.delete id
  else
    unless (@ids & ids).empty?
    # ids.each do |id|
    #   @ids.delete id
    # end
      @ids = @ids - ids
      @records.delete_if{|res| ids.include? res.id}
    end
  end
end
each() { |rec| ... } click to toggle source
# File lib/game_ecs/entity_store.rb, line 320
def each
  @records.each do |rec|
    yield rec
  end
end
has_id?(id) click to toggle source
# File lib/game_ecs/entity_store.rb, line 299
def has_id?(id)
  @ids.include? id
end