Implement coevent. (2)

This commit is contained in:
2023-01-13 16:37:31 +08:00
parent 555c88855c
commit 6efe70d751
4 changed files with 35 additions and 15 deletions

View File

@@ -12,6 +12,8 @@ namespace Cryville.Crtr.Event {
ContainerState RootState;
readonly Dictionary<ChartEvent, ContainerState> containerMap
= new Dictionary<ChartEvent, ContainerState>();
readonly Dictionary<EventContainer, ContainerState> stateMap
= new Dictionary<EventContainer, ContainerState>();
readonly Dictionary<ChartEvent, StampedEvent> map
= new Dictionary<ChartEvent, StampedEvent>();
public Dictionary<EventContainer, List<StampedEvent>> coeventMap
@@ -34,6 +36,7 @@ namespace Cryville.Crtr.Event {
void AddEventContainer(EventContainer c, ContainerState parent = null) {
var cs = new ContainerState(chart, c, parent);
stateMap.Add(c, cs);
if (parent == null) {
cs.Depth = 0;
RootState = cs;
@@ -78,6 +81,9 @@ namespace Cryville.Crtr.Event {
Unstamped = ev,
Container = con
};
if (ev is EventContainer) {
stateMap[(EventContainer)ev].StampedContainer = sev;
}
if (ev is InstantEvent) {
var tev = (InstantEvent)ev;
var pev = map[tev.Original];
@@ -146,8 +152,8 @@ namespace Cryville.Crtr.Event {
ocevs.Add(cev);
BatchCoevents(cev, ocevs);
}
ocevs.Add(ev);
if (rootFlag) ocevs.Sort(CompareStampedEvents);
else ocevs.Add(ev);
}
}