47 lines
906 B
C#
47 lines
906 B
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Cryville.Crtr.Event {
|
|
public class EventBatch : IComparable<EventBatch>, IEnumerable<StampedEvent> {
|
|
public double Time {
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
readonly List<StampedEvent> queue = new();
|
|
public int Count {
|
|
get { return queue.Count; }
|
|
}
|
|
|
|
public EventBatch(double time) {
|
|
Time = time;
|
|
}
|
|
|
|
public StampedEvent this[int index] {
|
|
get { return queue[index]; }
|
|
}
|
|
|
|
public void Add(StampedEvent ev) {
|
|
Enqueue(ev);
|
|
}
|
|
|
|
public void Enqueue(StampedEvent ev) {
|
|
int i = queue.BinarySearch(ev);
|
|
if (i < 0) queue.Insert(~i, ev);
|
|
}
|
|
|
|
public int CompareTo(EventBatch other) {
|
|
return Time.CompareTo(other.Time);
|
|
}
|
|
|
|
public IEnumerator<StampedEvent> GetEnumerator() {
|
|
return queue.GetEnumerator();
|
|
}
|
|
|
|
IEnumerator IEnumerable.GetEnumerator() {
|
|
return GetEnumerator();
|
|
}
|
|
}
|
|
}
|