Decouple the usage of PDT evaluator of chart player.

This commit is contained in:
2023-07-28 14:13:49 +08:00
parent 8b64165fb7
commit 3db8f61e3b
15 changed files with 96 additions and 77 deletions

View File

@@ -43,8 +43,8 @@ namespace Cryville.Crtr {
}
void MatchStatic(SkinElement rel, DynamicStack stack, RuntimeSkinContext ctx) {
var rc = ctx.ReadContext;
ChartPlayer.etor.ContextTransform = rc.Transform;
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeInsert(rc.PropSrcs);
PdtEvaluator.Instance.ContextTransform = rc.Transform;
if (rc.PropSrcs != null) PdtEvaluator.Instance.ContextCascadeInsert(rc.PropSrcs);
foreach (var p in rel.properties) {
try {
p.Key.ExecuteStatic(_group, ctx, p.Value, Variables);
@@ -54,7 +54,7 @@ namespace Cryville.Crtr {
new DynamicProperty { Context = ctx, Key = p.Key, Value = p.Value }
);
}
ChartPlayer.etor.ContextTransform = null;
PdtEvaluator.Instance.ContextTransform = null;
foreach (var e in rel.elements) {
try {
var nctxs = e.Key.MatchStatic(_group, rc);
@@ -73,7 +73,7 @@ namespace Cryville.Crtr {
);
}
}
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
if (rc.PropSrcs != null) PdtEvaluator.Instance.ContextCascadeDiscard();
}
public void MatchDynamic(int dl, bool recursive = false) {
var stack = _stacks[dl];
@@ -81,7 +81,7 @@ namespace Cryville.Crtr {
var nstack = dl + 1 < _stacks.Length ? _stacks[dl + 1] : null;
if (nstack != null) nstack.Clear();
Profiler.BeginSample("SkinContainer.MatchDynamic");
if (!recursive) ChartPlayer.etor.ContextSkinContainer = this;
if (!recursive) PdtEvaluator.Instance.ContextSkinContainer = this;
for (int i = 0; i < stack.Properties.Count; i++) {
DynamicProperty p = stack.Properties[i];
p.Key.ExecuteDynamic(_group, p.Context, p.Value, Variables, dl);
@@ -93,7 +93,7 @@ namespace Cryville.Crtr {
for (int i = 0; i < stack.Elements.Count; i++) {
DynamicElement e = stack.Elements[i];
var psrcs = e.Context.ReadContext.PropSrcs;
if (psrcs != null) ChartPlayer.etor.ContextCascadeInsert(psrcs);
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeInsert(psrcs);
if (e.Selectors.IsUpdatable(_group, dl)) {
try {
var nctx = e.Selectors.MatchDynamic(_group, e.Context.ReadContext);
@@ -115,15 +115,15 @@ namespace Cryville.Crtr {
if (nstack == null) throw new SelectorNotAvailableException();
nstack.Elements.Add(e);
}
if (psrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeDiscard();
}
if (!recursive) ChartPlayer.etor.ContextSkinContainer = null;
if (!recursive) PdtEvaluator.Instance.ContextSkinContainer = null;
Profiler.EndSample();
}
void MatchDynamic(SkinElement rel, int dl, DynamicStack stack, RuntimeSkinContext ctx) {
var rc = ctx.ReadContext;
ChartPlayer.etor.ContextTransform = rc.Transform;
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeInsert(rc.PropSrcs);
PdtEvaluator.Instance.ContextTransform = rc.Transform;
if (rc.PropSrcs != null) PdtEvaluator.Instance.ContextCascadeInsert(rc.PropSrcs);
foreach (var p in rel.properties) {
if (p.Key.annotations.Contains("once")) {
if (_once.Contains(p.Key)) continue;
@@ -134,7 +134,7 @@ namespace Cryville.Crtr {
p.Key.ExecuteDynamic(_group, ctx, p.Value, Variables, dl);
}
}
ChartPlayer.etor.ContextTransform = null;
PdtEvaluator.Instance.ContextTransform = null;
foreach (var e in rel.elements) {
if (e.Key.IsUpdatable(_group, dl)) {
SkinContext nctx = e.Key.MatchDynamic(_group, rc);
@@ -149,16 +149,16 @@ namespace Cryville.Crtr {
);
}
}
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
if (rc.PropSrcs != null) PdtEvaluator.Instance.ContextCascadeDiscard();
}
float _rtime;
readonly PropSrc _rtimeSrc;
public void MatchAnimation(AnimationSpan span, float rtime, RuntimeSkinContext ctx) {
ChartPlayer.etor.ContextSkinContainer = this;
ChartPlayer.etor.ContextSelfValue = _rtimeSrc;
PdtEvaluator.Instance.ContextSkinContainer = this;
PdtEvaluator.Instance.ContextSelfValue = _rtimeSrc;
MatchAnimationInternal(span, rtime, ctx);
ChartPlayer.etor.ContextSelfValue = null;
ChartPlayer.etor.ContextSkinContainer = null;
PdtEvaluator.Instance.ContextSelfValue = null;
PdtEvaluator.Instance.ContextSkinContainer = null;
}
void MatchAnimationInternal(AnimationSpan span, float rtime, RuntimeSkinContext ctx) {
_rtime = rtime;