/// <summary> /// Initializes a new instance of the <see cref="EffectPermutation"/> class. /// </summary> public EffectPermutation() { Keys = new EffectParameterKeyStandardGenerator(); Children = new List <EffectPermutation>(); }
private IEnumerable <CompilerParameters> GeneratePermutation(CompilerParameters parameters, EffectParameterKeyStandardGenerator keys, List <EffectPermutation> permutations, ILogger log) { if (keys == null || keys.Count == 0) { if (permutations == null || permutations.Count == 0) { foreach (var newParameters in GenerateCompilerParametersPermutation(parameters, 0, log)) { yield return(newParameters); } } else { foreach (var permutation in permutations) { foreach (var parametersPerPermutations in GeneratePermutation(parameters, permutation.Keys, permutation.Children, log)) { yield return(parametersPerPermutations); } } } } else { foreach (var parametersPerKeyValuePermutations in GenerateKeysPermutation(parameters, keys.GenerateKeyValues())) { foreach (var subParameters in GeneratePermutation(parametersPerKeyValuePermutations, null, permutations, log)) { yield return(subParameters); } } } }