D is our last hope
ryuukk_
ryuukk.dev at gmail.com
Fri Dec 8 11:42:22 UTC 2023
D would annihilate the game industry thanks to its type
introspection capabilities
```D
auto view(Includes)()
{
return view!(Includes, Excludes!());
}
auto view(Includes, Excludes)()
{
static if (Includes.args.length == 1 &&
Excludes.args.length == 0)
{
auto storage = assure!(Includes.args[0]);
return BasicView!(Includes.args[0]).create( storage );
}
else
{
size_t[Includes.args.length] includes_arr;
static foreach (i, T; Includes.args)
{
assure!(T)();
includes_arr[i] = type_id!(T);
}
size_t[Excludes.args.length] excludes_arr;
static foreach (i, T; Excludes.args)
{
assure!(T)();
excludes_arr[i] = type_id!(T);
}
return MultiView!(Includes.args.length,
Excludes.args.length).create(&this, includes_arr, excludes_arr);
}
}
```
How sweeet!
```D
foreach(view, e; registry.view!(Includes!(CTransform,
CVelocity, CNetworked)))
{
auto trs = registry.get!(CTransform)(e);
auto vel = registry.get!(CVelocity)(e);
auto net = registry.get!(CNetworked)(e);
}
```
0 OOP, few lines, only data, maximum performance
Let's promote this, not ``final public abstract class ECSSystem :
Updatable, Syncrhonicable`` BS OOP propaganda
More information about the Digitalmars-d
mailing list