Add gap after block END when it doesn't chain to a same-track START

This commit is contained in:
Ian Gulliver
2026-02-20 08:23:54 -07:00
parent 17638ad18f
commit 2b5644419b

View File

@@ -177,6 +177,21 @@ func (b *timelineBuilder) findCell(blockID, event string) cellID {
return cellID{-1, -1}
}
func (b *timelineBuilder) endChainsSameTrack(blockID string) bool {
trackID := b.getTrack(blockID)
for _, trigger := range b.show.Triggers {
if trigger.Source.Block != blockID || trigger.Source.Signal != "END" {
continue
}
for _, target := range trigger.Targets {
if target.Hook == "START" && b.getTrack(target.Block) == trackID {
return true
}
}
}
return false
}
func (b *timelineBuilder) buildCells() {
for _, block := range b.show.Blocks {
trackID := b.getTrack(block.ID)
@@ -192,6 +207,9 @@ func (b *timelineBuilder) buildCells() {
cells = getBlockCells(block)
}
b.trackCells[idx] = append(b.trackCells[idx], cells...)
if block.Type != "cue" && !b.endChainsSameTrack(block.ID) {
b.trackCells[idx] = append(b.trackCells[idx], TimelineCell{IsGap: true})
}
}
}