Example #1
0
        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);
        }
Example #2
0
        /// <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);
            }
        }