public void Move(IDuratedItem <T> item, Duration newduration) { var durateditem = item as DuratedItem <T> ?? items.FirstOrDefault(_ => _.Duration == item.Duration && _.Value.Equals(item.Value)); var oldduration = item.Duration; if (oldduration == newduration) { return; } if (oldduration.Start != newduration.Start) { elements_start.Remove(durateditem, oldduration.Start); elements_start.Add(durateditem, newduration.Start); } if (oldduration.End != newduration.End) { elements_end.Remove(durateditem, oldduration.End); elements_end.Add(durateditem, newduration.End); } durateditem.Duration = newduration; ItemMoved?.Invoke(oldduration, newduration, item.Value); }
public void Remove(V item, Time time) { if (time == pivot) { items.Remove(item); } else if (time > pivot) { right.Remove(item, time); } else // time < pivot { left.Remove(item, time); } }