IEnumerable <CycledDuratedItem <T> > Intersecting_compter(Time point) { var cycles = point / Length; var offset = Length * cycles; point %= Length; foreach (var item in field1.Intersecting(point)) { yield return(new CycledDuratedItem <T>( item.Value, new Duration { Start = offset + item.Duration.Start, Length = item.Duration.Length }, cycles )); } foreach (var item in field2.Intersecting(point)) { yield return(new CycledDuratedItem <T>( item.Value, new Duration { Start = offset + Length + item.Duration.Start, Length = item.Duration.Length }, cycles - 1 )); } }
public IEnumerable <Note> NotesInTime(Duration duration) => notes_field .Intersecting(duration) .Select( noteID_item => notes_lookup[noteID_item.Value] );
public static void DeleteTime <T>( this DurationField <T> field, Duration eraser ) { var throughandbeyond = new Duration { Start = eraser.Start, End = field.GeneralDuration.Value.End }; foreach (var item in field.Intersecting(throughandbeyond).ToArray()) { var subtractedtime = item.Duration.Subtract_Time(eraser); if (subtractedtime != null) { field.Move(item, subtractedtime); } else { field.Remove(item); } } }
public virtual void Forget(Duration duration) { foreach (var item in knowledge.Intersecting(duration).ToArray()) { knowledge.Remove(item); } }
public static void OverwriteEverythingToRight <T>( this DurationField <T> field, T item, Time start ) => ScootAndOverwrite( field, item, new Duration { Start = start, End = field .Intersecting(start) .Max(item2 => item2.Duration.End) } );
public static void ScootAndOverwrite <T>( this DurationField <T> field, T item, Duration duration ) { foreach (var oldstaff in field.Intersecting(duration).ToArray()) { field.Remove(oldstaff); foreach (var cutduration in oldstaff.Duration.Subtract(duration)) { field.Add(oldstaff.Value, cutduration); } } field.Add(item, duration); }