1. This (along with OnJudgement above) should be done in the following three steps:
2. How about giving the stages an Inverted BindableBool, and having them decide their scale?
1. Rename to stages
2. This should be checking for null or 0, with two exceptions:
3. Space before and after =.
4. foreach (var stage ...
5. Rename to getStageByColumn, and actualColumn -> column.
1. Add space before {, before Duration, and after 1000
2. How about just ManiaStage?
3. This is really just Columns.Count, you're not saving much with this extra variable here.