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(); } }
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; }
public void AddPass(PassRegisterBase pass, Type[] updateAfter, Type[] updateBefore) { availablePasses.Add(pass, updateAfter, updateBefore); pass.RegisterCollectionAndFilter(systemList); }