// (B_i is alternatives.size().) Not set before finalize() has run.
size_t cardinality_base = 0;
+ // Find the chosen alternative for this block in a given instance.
+ size_t chosen_alternative(size_t chain_idx) const {
+ return (chain_idx / cardinality_base) % alternatives.size();
+ }
+
std::vector<EffectBlueprint *> alternatives; // Must all have the same amount of inputs. Pointers to make things easier for Lua.
std::vector<Index> inputs; // One for each input of alternatives[0] (ie., typically 0 or 1, occasionally 2).
int currently_chosen_alternative = 0;