WIP: simplified process sequence based on std::tuple
Please have a look at this proposal for a simpler ProcessSequence system. The original ProcessSequence was actually a binary process tree. The new implementation is now a real sequence based on std::tuple. This has several advantages.
- greatly simplified implementation
- less boilerplate code
- a sequence can be created with the natural syntax
ProcessSequence seq(proc1, proc2, ...)
- we can apply algorithms which work with std::tuple, like
boost::mp11::tuple_for_each
- we can internally reorder the items in the sequence
The last point is very important one for speed optimizations. The sequence in general will follow the order provided by the user, but it makes sense to sort the processes so that all continuous processes are next to each other, for example. This allows the compiler to better optimize the code and potentially reduces cache misses.
The code compiles and can be inspected. I haven't yet implemented SelectInteraction
and SelectDecay
, because I am not sure how these are supposed to work.