internal static void RunInBatchMode(Type containerName, List <Type> converterList, ConverterFilter converterFilter) { Debug.Log($"Converter Batch Mode: {containerName}"); var container = (RenderPipelineConverterContainer)Activator.CreateInstance(containerName); List <RenderPipelineConverter> converters = GetConvertersInContainer(container); List <RenderPipelineConverter> convertersToBatch = new List <RenderPipelineConverter>(converters.Count); // This is just a temp to deal with the Include and Exclude enum List <RenderPipelineConverter> tempConvertersToBatch = new List <RenderPipelineConverter>(converters.Count); if (converterFilter == ConverterFilter.Inclusive) { foreach (RenderPipelineConverter converter in converters) { if (converterList.Contains(converter.GetType())) { tempConvertersToBatch.Add(converter); } } } else if (converterFilter == ConverterFilter.Exclusive) { tempConvertersToBatch = converters; foreach (RenderPipelineConverter converter in converters) { if (converterList.Contains(converter.GetType())) { tempConvertersToBatch.Remove(converter); } } } convertersToBatch = tempConvertersToBatch; BatchConverters(convertersToBatch); }
/// <summary> /// Call this method to run a specific list of converters in a specific container in batch mode. /// </summary> /// <param name="containerName">The name of the container which will be batched.</param> /// <param name="converterList">The list of converters that will be either included or excluded from batching. These converters need to be part of the passed in container for them to run.</param> /// <param name="converterFilter">The enum that decide if the list of converters will be included or excluded when batching.</param> public static void RunInBatchMode(ConverterContainerId containerName, List <ConverterId> converterList, ConverterFilter converterFilter) { Type containerType = GetContainerType(containerName); List <Type> converterTypes = new List <Type>(converterList.Count); foreach (ConverterId typeName in converterList) { var converterType = GetConverterType(typeName); if (containerType != null && !converterTypes.Contains(converterType)) { converterTypes.Add(converterType); } } if (containerType != null && converterTypes.Any()) { RunInBatchMode(containerType, converterTypes, converterFilter); } }