class

ECS::World

Inherits Reference / Object

Root level container for all entities / components, is iterated with ECS::Systems

Constructors

new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
Source
new

Creates empty world

Source

Class methods

from_yaml
Source

Instance methods

add_yaml(io_or_string)
Source
add_yaml
Source
all_of(*args, **options)

Creates new Filter and adds a condition to it

Source
all_of(*args, **options, &)

Creates new Filter and adds a condition to it

Source
any_of(*args, **options)

Creates new Filter and adds a condition to it

Source
any_of(*args, **options, &)

Creates new Filter and adds a condition to it

Source
component_exists?(typ)

Returns true if at least one component of type typ exists in a world

Source
decode(io)
Source
delete_all(with_callbacks = false)

Deletes all components and entities from the world

Source
each_entity

Iterates over all entities

Source
encode(io)
Source
entities_capacity

number of entities that could exist in a world before reallocation of pools

Source
entities_count

total number of alive entities in a world

Source
exclude(*args, **options)

Creates new Filter and adds a condition to it

Source
exclude(*args, **options, &)

Creates new Filter and adds a condition to it

Source
inspect(io)
Source
new_entity

Creates new entity in a world context. Basically doesn't cost anything as it just increase entities counter. Entity don't take up space without components.

Source
new_filter

Creates new Filter. This call can be skipped: Instead of world.new_filter.of(Comp1) you can do world.of(Comp1)

Source
of(*args, **options)

Creates new Filter and adds a condition to it

Source
of(*args, **options, &)

Creates new Filter and adds a condition to it

Source
query(typ)

Returns SimpleFilter (stack-allocated) that can iterate over single component

Source
stats

Non-allocating version of stats. Yields component names and count of corresponding components

world = init_benchmark_world(1000000)
world.stats do |comp_name, value| 
  puts "#{comp_name}: #{value}" 
end
Source
stats

Returns Hash containing count of components

world = init_benchmark_world(1000000)
puts world.stats # prints {"Comp1" => 500000, "Comp2" => 333334, "Comp3" => 200000, "Comp4" => 142858, "Config" => 1}
Source
to_yaml(yaml : YAML::Nodes::Builder) : Nil
Source