View Source ECSx.Manager (ECSx v0.3.1)
The Manager for your ECSx application.
In an ECSx application, the Manager is responsible for:
- starting up ETS tables for each Component Type, where the Components will be stored
- prepopulating the game content into memory
- keeping track of the Systems to run, and their run order
- running the Systems every tick
components-0-and-systems-0
components/0
and systems/0
Your Manager module must contain two zero-arity functions called components
and systems
which return a list of all Component Types and Systems in your application. The order of
the Component Types list is irrelevant, but the order of the Systems list is very important,
because the Systems are run consecutively in the given order.
setup-block
setup
block
Another important piece of the Manager module is the setup
block. Here you can load
all the necessary data for your app before any Systems run or users connect. See setup/1
for more information.
Link to this section Summary
Functions
Runs the given code block during startup.
Link to this section Functions
Runs the given code block during startup.
The code will be run during the Manager's initialization (so pay special attention to the
position of ECSx.Manager
in your application's supervision tree). The Component tables will
be created before setup
is executed.
example
Example
defmodule YourApp.Manager do
use ECSx.Manager
setup do
for npc <- YourApp.fetch_npc_spawn_info() do
YourApp.Components.Name.add(npc.id, npc.name)
YourApp.Components.HitPoints.add(npc.id, npc.hp)
YourApp.Components.Location.add(npc.id, npc.spawn_location)
end
end
end
This setup will spawn each NPC with Components for Name, HitPoints, and Location.