To cover more user cases, we should allow them to make their own implementations of various parts of the Tiled3D standard runner (examples listed below). These parts should be provided at compile-time for best performance, since users can write their own abstraction if they prefer more dynamic runtime rules.
- How to handle failures -- pass an
std::tuple of failure handlers which are tried one by one until the failure is successfully handled. If none handle it (or none were provided) then the StandardRunner fails its run. Provide the current failure techniques (e.g. temperature-based clear size) this way.
- How to weight tiles -- pass a single weighting rule object which fills an array of weights per tile.
- How to weight permutations of one tile -- pass a single weighting rule object which fills an array of weights per transform (using the same ordering as TransformSet's bits).
- How to select the next tile to collapse -- it might be nice to occasionally pick one that isn't close to collapse, for example.
For maximum utility these new user types must all be able to respond to all events that happen in the Grid and StandardRunner. The CellHistory of the grid should be abstracted a bit, removing the esoteric "temperature" and adding other concrete data which users might find useful.
To cover more user cases, we should allow them to make their own implementations of various parts of the Tiled3D standard runner (examples listed below). These parts should be provided at compile-time for best performance, since users can write their own abstraction if they prefer more dynamic runtime rules.
std::tupleof failure handlers which are tried one by one until the failure is successfully handled. If none handle it (or none were provided) then the StandardRunner fails its run. Provide the current failure techniques (e.g. temperature-based clear size) this way.For maximum utility these new user types must all be able to respond to all events that happen in the Grid and StandardRunner. The
CellHistoryof the grid should be abstracted a bit, removing the esoteric "temperature" and adding other concrete data which users might find useful.