From d6e3d3ad0096e7cfb8b71cff230404248eb0ad15 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Sun, 9 Apr 2023 22:13:50 +0800 Subject: [PATCH] Make `clip` field in `JudgeDefinition` dynamic. --- Assets/Cryville/Crtr/Judge.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Assets/Cryville/Crtr/Judge.cs b/Assets/Cryville/Crtr/Judge.cs index 0187473..367b444 100644 --- a/Assets/Cryville/Crtr/Judge.cs +++ b/Assets/Cryville/Crtr/Judge.cs @@ -65,15 +65,17 @@ namespace Cryville.Crtr { var tev = (Chart.Judge)sev.Unstamped; if (tev.Id.Key == _var_pause) throw new InvalidOperationException("Cannot assign the special judge \"pause\" to notes"); Identifier input = default(Identifier); - ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => input = new Identifier(v)), _rs.judges[tev.Id].input); + Clip clip = default(Clip); + var def = _rs.judges[tev.Id]; + ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => input = new Identifier(v)), def.input); + ChartPlayer.etor.Evaluate(new PropOp.Clip(v => clip = v), def.clip); double st = sev.Time, et = st + sev.Duration; var list = evs[input]; - var def = _rs.judges[tev.Id]; var ev = new JudgeEvent { StartTime = st, EndTime = et, - StartClip = st + def.clip.Behind, - EndClip = et + def.clip.Ahead, + StartClip = st + clip.Behind, + EndClip = et + clip.Ahead, BaseEvent = tev, Definition = def, Handler = handler, @@ -304,7 +306,7 @@ namespace Cryville.Crtr { public PairList pass; } public class JudgeDefinition { - public Clip clip; + public PdtExpression clip; public PdtExpression input; public PdtExpression hit; public PdtExpression persist;