示例#1
0
        public void LoopPasses()
        {
            disposedToUnregister.Clear();
            foreach (var system in systemList)
            {
                if (system is AppObject appObject &&
                    appObject.IsDisposed)
                {
                    disposedToUnregister.Add(appObject);
                }
            }

            foreach (var toUnregister in disposedToUnregister)
            {
                Unregister(toUnregister);
            }

            passToLoop.Clear();
            foreach (var register in availablePasses)
            {
                passToLoop.Add(register);
            }

            foreach (var register in passToLoop)
            {
                if (register.ManualTrigger)
                {
                    continue;
                }

                ExecutingRegister = register;
                register.Trigger();
            }
        }
示例#2
0
        public void Dispose()
        {
            isDisposing = true;

            disposedToUnregister.Clear();

            foreach (var sys in systemList)
            {
                if (sys is IDisposable disposable)
                {
                    disposable.Dispose();
                }
            }

            systemList.Clear();
            systemList = null;

            systemMap.Clear();
            systemMap = null;

            availablePasses.Clear();
            passToLoop.Clear();

            ExecutingRegister = null;
        }
示例#3
0
 public void AddPass(PassRegisterBase pass, Type[] updateAfter, Type[] updateBefore)
 {
     availablePasses.Add(pass, updateAfter, updateBefore);
     pass.RegisterCollectionAndFilter(systemList);
 }