예제 #1
0
        protected void AddContext(PipelineContext context)
        {
            context.CreateOperations();
            var defaultPipeline = context.GetDefaultPipeline();
            var operationList   = new IUpdateOperation[0];

            defaultPipeline.GetRunSystems(ref operationList);
            var fixedUpdateOperations = operationList.Where(q => q is IFixedUpdateOperation).ToArray();

            if (fixedUpdateOperations.Length > 0)
            {
                _fixedUpdatePipelines.Add(new CustomPipeline(context, context.CreateOperations("FixedUpdate", fixedUpdateOperations)));
            }

            var lateUpdateOperations = operationList.Where(q => q is ILateUpdateOperation).ToArray();

            if (lateUpdateOperations.Length > 0)
            {
                _lateUpdatePipelines.Add(new CustomPipeline(context, context.CreateOperations("LateUpdate", lateUpdateOperations)));
            }

            defaultPipeline.RemoveRunSystems(fixedUpdateOperations.Concat(lateUpdateOperations).ToArray());
            _defaultPipelines.Add(new CustomPipeline(context, defaultPipeline));

            _contexts.Add(context);
        }