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