From d2ff168e252bb0b8ddd437521a64655425334023 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Mon, 14 Nov 2022 16:38:15 +0800 Subject: [PATCH] Add invalidation for property source. Fix cache lock for scores. --- Assets/Cryville/Crtr/Judge.cs | 2 ++ Assets/Cryville/Crtr/PropSrc.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/Assets/Cryville/Crtr/Judge.cs b/Assets/Cryville/Crtr/Judge.cs index 827a686..76cbe88 100644 --- a/Assets/Cryville/Crtr/Judge.cs +++ b/Assets/Cryville/Crtr/Judge.cs @@ -150,10 +150,12 @@ namespace Cryville.Crtr { var key = scoreop.Key; _etor.ContextSelfValue = scoreSrcs[key.name.Key]; _etor.Evaluate(scoreOps[key.name.Key], scoreop.Value); + scoreSrcs[key.name.Key].Invalidate(); foreach (var s in _rs.scores) { if (s.Value.value != null) { _etor.ContextSelfValue = scoreSrcs[s.Key.Key]; _etor.Evaluate(scoreOps[s.Key.Key], s.Value.value); + scoreSrcs[s.Key.Key].Invalidate(); } } } diff --git a/Assets/Cryville/Crtr/PropSrc.cs b/Assets/Cryville/Crtr/PropSrc.cs index 7c800c2..5ce80d1 100644 --- a/Assets/Cryville/Crtr/PropSrc.cs +++ b/Assets/Cryville/Crtr/PropSrc.cs @@ -6,6 +6,7 @@ namespace Cryville.Crtr { public abstract class PropSrc { int _type; byte[] _buf = null; + public void Invalidate() { _buf = null; } public void Get(out int type, out byte[] value) { if (_buf == null) InternalGet(out _type, out _buf); type = _type;