On Thursday, 6 February 2014 at 13:47:22 UTC, Meta wrote:
On Thursday, 6 February 2014 at 05:27:22 UTC, Mike Parker wrote:
A cursory look at Nitro suggests they are using an ECS with
DOP. Given that they're providing ranges for iterating the
data, it will fit into D's range-based component pipelines
(std.algorithm and such).
That seems cool. I can only imagine the possibilities...
auto shipComponents = components.filter!(a =>
a.hasComponent!SpaceShip);
foreach (i, spaceship; taskPool.parallel(shipComponents))
{
spaceship.name = format("Ship %i", i);
}
You're example almost works. With the EntityComponentManager API
it works like this:
auto shipEntities = ecm.query!SpaceShip();
foreach (i, spaceship; taskPool.parallel(shipEntities))
{
auto shipData = spaceship.getComponent!SpaceShip();
shipData.name = format("Ship %i", i);
}
Now that unittests are written, documentation is on its way and
should be ready in a few days.