예제 #1
0
        public void InitializePipeline(ISyncModelProvider provider)
        {
            if (pipelineAsset == null)
            {
                Debug.LogError("Unable start pipeline. Please assign a Pipeline Asset.");
                return;
            }

            beforeInitialize?.Invoke();

            if (m_Reflect == null)
            {
                m_Reflect = FindObjectOfType <RuntimeReflectBootstrapper>();
            }

            if (m_Reflect == null)
            {
                m_Reflect = gameObject.AddComponent <RuntimeReflectBootstrapper>();
            }

            m_PipelineRunner              = new PipelineRunner(m_Reflect.Hook);
            m_PipelineRunner.onException += onException;

            m_PipelineRunner.CreateProcessors(this, provider);

            m_PipelineRunner.Initialize();

            afterInitialize?.Invoke();
        }
예제 #2
0
        protected IPipeline CreatePipeline(params Type[] contributorTypes)
        {
            var resolver = new InternalDependencyResolver();

            resolver.AddDependency <IPipelineContributor, BootstrapperContributor>();
            foreach (var type in contributorTypes)
            {
                resolver.AddDependency(typeof(IPipelineContributor), type, DependencyLifetime.Singleton);
            }
            var runner = new PipelineRunner(resolver)
            {
                PipelineLog = new TraceSourceLogger <PipelineLogSource>()
            };

            runner.Initialize();
            return(runner);
        }