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

@@ -17,9 +17,9 @@ namespace Cryville.Crtr {
_skinContainer = new SkinContainer(this, _def.elements);
RootTransform = new GameObject("effect:" + GetHashCode().ToString(CultureInfo.InvariantCulture)).transform;
SkinContext = new SkinContext(RootTransform);
ChartPlayer.etor.ContextCascadeInsertBlock();
PdtEvaluator.Instance.ContextCascadeInsertBlock();
_skinContainer.MatchStatic();
ChartPlayer.etor.ContextCascadeDiscardBlock();
PdtEvaluator.Instance.ContextCascadeDiscardBlock();
_comps = RootTransform.GetComponentsInChildren<SkinComponent>();
foreach (var i in _comps) i.Init();
_indexSrc = new PropSrc.Float(() => Index);
@@ -57,8 +57,8 @@ namespace Cryville.Crtr {
}
public void OnEmit(double time, Transform target) {
_currentTarget = target;
_ctxev = ChartPlayer.etor.ContextEvent;
_ctxstate = ChartPlayer.etor.ContextState;
_ctxev = PdtEvaluator.Instance.ContextEvent;
_ctxstate = PdtEvaluator.Instance.ContextState;
_skinContainer.MatchDynamic(0, true);
if (_currentStateName.Key == 0) {
EnterState(_def.init, time, _currentTarget, true);
@@ -73,11 +73,11 @@ namespace Cryville.Crtr {
_currentState = _def.states[name];
Rewind(time, target);
RootTransform.gameObject.SetActive(true);
ChartPlayer.etor.ContextCascadeInsert();
ChartPlayer.etor.ContextCascadeUpdate(_VAR_EFFECT_INDEX, _indexSrc);
ChartPlayer.etor.Evaluate(_durationOp, _currentState.duration);
PdtEvaluator.Instance.ContextCascadeInsert();
PdtEvaluator.Instance.ContextCascadeUpdate(_VAR_EFFECT_INDEX, _indexSrc);
PdtEvaluator.Instance.Evaluate(_durationOp, _currentState.duration);
_skinContainer.MatchDynamic(1, emitting);
ChartPlayer.etor.ContextCascadeDiscard();
PdtEvaluator.Instance.ContextCascadeDiscard();
}
public bool OnStateDone() {
if (_currentState.next.Key == 0) {
@@ -87,11 +87,11 @@ namespace Cryville.Crtr {
return false;
}
else {
ChartPlayer.etor.ContextEvent = _ctxev;
ChartPlayer.etor.ContextState = _ctxstate;
PdtEvaluator.Instance.ContextEvent = _ctxev;
PdtEvaluator.Instance.ContextState = _ctxstate;
EnterState(_currentState.next, EndTime, _currentTarget, false);
ChartPlayer.etor.ContextEvent = null;
ChartPlayer.etor.ContextState = null;
PdtEvaluator.Instance.ContextEvent = null;
PdtEvaluator.Instance.ContextState = null;
return true;
}
}