public void ModifyAdd(IConnectionSink sink, T newAbilityInstance, int modificationOwner) { newAbilityInstance.root = root; newAbilityInstance.carrier = carrier; if (savedData != null && savedData.TryGetValue(modificationOwner, out var list)) { var itemIndex = list.FindIndex(item => item.UId() == newAbilityInstance.UId()); if (itemIndex != -1) { // old save item from previous save var item = list[itemIndex]; // is no longer needed and can be removed list.RemoveAt(itemIndex); if (list.Count == 0) { savedData.Remove(modificationOwner); } } } else { } collection.Add(newAbilityInstance); newAbilityInstance.Enlive(); sink.AddConnection(new AnonymousDisposable(() => collection.Remove(newAbilityInstance))); }
public IDisposable ModifyAdd(T elem) { collection.Add(elem); return(new AnonymousDisposable(() => collection.Remove(elem))); }