private void UpdateBundleSortList(List <SerializedBundleRef> sortedList, PostProcessEvent evt) { List <PostProcessBundle> effects = (from kvp in m_Bundles where kvp.Value.attribute.eventType == evt && !kvp.Value.attribute.builtinEffect select kvp.Value).ToList(); sortedList.RemoveAll(delegate(SerializedBundleRef x) { string searchStr = x.assemblyQualifiedName; return(!effects.Exists((PostProcessBundle b) => b.settings.GetType().AssemblyQualifiedName == searchStr)); }); foreach (PostProcessBundle item2 in effects) { string typeName2 = item2.settings.GetType().AssemblyQualifiedName; if (!sortedList.Exists((SerializedBundleRef b) => b.assemblyQualifiedName == typeName2)) { SerializedBundleRef serializedBundleRef = new SerializedBundleRef(); serializedBundleRef.assemblyQualifiedName = typeName2; SerializedBundleRef item = serializedBundleRef; sortedList.Add(item); } } foreach (SerializedBundleRef sorted in sortedList) { string typeName = sorted.assemblyQualifiedName; PostProcessBundle postProcessBundle = sorted.bundle = effects.Find((PostProcessBundle b) => b.settings.GetType().AssemblyQualifiedName == typeName); } }
private void UpdateBundleSortList(List <SerializedBundleRef> sortedList, PostProcessEvent evt) { // First get all effects associated with the injection point var effects = m_Bundles .Where(kvp => kvp.Value.attribute.eventType == evt && !kvp.Value.attribute.builtinEffect) .Select(kvp => kvp.Value) .ToList(); // Remove types that don't exist anymore sortedList.RemoveAll(x => { var searchStr = x.assemblyQualifiedName; return(!effects.Exists(b => b.settings.GetType().AssemblyQualifiedName == searchStr)); }); // Add new ones foreach (var effect in effects) { var typeName = effect.settings.GetType().AssemblyQualifiedName; if (!sortedList.Exists(b => b.assemblyQualifiedName == typeName)) { var sbr = new SerializedBundleRef { assemblyQualifiedName = typeName }; sortedList.Add(sbr); } } // Link internal references foreach (var effect in sortedList) { var typeName = effect.assemblyQualifiedName; var bundle = effects.Find(b => b.settings.GetType().AssemblyQualifiedName == typeName); effect.bundle = bundle; } }