Decouple the usage of PDT evaluator of chart player.
This commit is contained in:
@@ -66,7 +66,7 @@ namespace Cryville.Crtr {
|
||||
if (comps[i] == "") comps[i] = "0";
|
||||
}
|
||||
_itor.SetSource(string.Format("({0});", string.Join(',', comps)));
|
||||
ChartPlayer.etor.Evaluate(_vecop, _itor.GetExp());
|
||||
PdtEvaluator.Instance.Evaluate(_vecop, _itor.GetExp());
|
||||
return _vecbuf;
|
||||
}
|
||||
}
|
||||
@@ -99,18 +99,18 @@ namespace Cryville.Crtr {
|
||||
var exp = _itor.GetExp();
|
||||
switch (c) {
|
||||
case '@':
|
||||
ChartPlayer.etor.Evaluate(_vecop, exp);
|
||||
PdtEvaluator.Instance.Evaluate(_vecop, exp);
|
||||
node.Time = new Vec1(_vecbuf);
|
||||
break;
|
||||
case '~':
|
||||
ChartPlayer.etor.Evaluate(_vecop, exp);
|
||||
PdtEvaluator.Instance.Evaluate(_vecop, exp);
|
||||
node.EndTime = new Vec1(_vecbuf);
|
||||
break;
|
||||
case '^':
|
||||
node.Transition = exp;
|
||||
break;
|
||||
case ':':
|
||||
ChartPlayer.etor.Evaluate(_vecop, exp);
|
||||
PdtEvaluator.Instance.Evaluate(_vecop, exp);
|
||||
node.Value = Vector.Construct(ChartPlayer.motionRegistry[name].Type, _vecbuf);
|
||||
break;
|
||||
default:
|
||||
|
@@ -60,8 +60,6 @@ namespace Cryville.Crtr {
|
||||
public static float sv = 16f;
|
||||
|
||||
public static Dictionary<Identifier, MotionRegistry> motionRegistry;
|
||||
|
||||
public static PdtEvaluator etor;
|
||||
#endregion
|
||||
|
||||
#region MonoBehaviour
|
||||
@@ -548,7 +546,7 @@ namespace Cryville.Crtr {
|
||||
effectManager.Dispose();
|
||||
effectManager = null;
|
||||
}
|
||||
etor = null;
|
||||
PdtEvaluator.Instance.Reset();
|
||||
motionRegistry = null;
|
||||
Logger.Log("main", 1, "Game", "Stopped");
|
||||
}
|
||||
@@ -614,7 +612,7 @@ namespace Cryville.Crtr {
|
||||
};
|
||||
|
||||
using (StreamReader reader = new StreamReader(info.chartFile.FullName, Encoding.UTF8)) {
|
||||
etor = new PdtEvaluator();
|
||||
PdtEvaluator.Instance.Reset();
|
||||
|
||||
LoadRuleset(info.rulesetFile); loadPregress = .05f;
|
||||
|
||||
@@ -634,7 +632,7 @@ namespace Cryville.Crtr {
|
||||
|
||||
Logger.Log("main", 0, "Load/WorkerThread", "Initializing judge and input"); loadPregress = .35f;
|
||||
judge = new Judge(this, pruleset);
|
||||
etor.ContextJudge = judge;
|
||||
PdtEvaluator.Instance.ContextJudge = judge;
|
||||
|
||||
inputProxy = new InputProxy(pruleset, judge, screenSize);
|
||||
inputProxy.LoadFrom(_rscfg.inputs);
|
||||
@@ -686,7 +684,7 @@ namespace Cryville.Crtr {
|
||||
if (ruleset.format != Ruleset.CURRENT_FORMAT) throw new FormatException("Invalid ruleset file version");
|
||||
ruleset.LoadPdt(dir);
|
||||
pruleset = ruleset.Root;
|
||||
pruleset.Optimize(etor);
|
||||
pruleset.Optimize(PdtEvaluator.Instance);
|
||||
}
|
||||
RMVPool.Shared = new RMVPool();
|
||||
MotionCachePool.Shared = new MotionCachePool();
|
||||
@@ -698,7 +696,7 @@ namespace Cryville.Crtr {
|
||||
Logger.Log("main", 0, "Load/WorkerThread", "Loading skin: {0}", file);
|
||||
skin.LoadPdt(dir);
|
||||
pskin = skin.Root;
|
||||
pskin.Optimize(etor);
|
||||
pskin.Optimize(PdtEvaluator.Instance);
|
||||
effectManager = new EffectManager(pskin);
|
||||
}
|
||||
#endregion
|
||||
|
@@ -26,7 +26,7 @@ namespace Cryville.Crtr.Config {
|
||||
|
||||
void OnEnable() {
|
||||
try {
|
||||
ChartPlayer.etor = new PdtEvaluator();
|
||||
PdtEvaluator.Instance.Reset();
|
||||
FileInfo file = new FileInfo(
|
||||
Game.GameDataPath + "/rulesets/" + Settings.Default.LoadRuleset
|
||||
);
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -127,12 +127,12 @@ namespace Cryville.Crtr.Event {
|
||||
a_tail = RegisterAnchor(_a_tail, true);
|
||||
}
|
||||
public virtual void Init() {
|
||||
ChartPlayer.etor.ContextState = ps;
|
||||
ChartPlayer.etor.ContextEvent = Container;
|
||||
PdtEvaluator.Instance.ContextState = ps;
|
||||
PdtEvaluator.Instance.ContextEvent = Container;
|
||||
skinContainer.MatchStatic();
|
||||
MatchDynamic(ps, 0);
|
||||
ChartPlayer.etor.ContextEvent = null;
|
||||
ChartPlayer.etor.ContextState = null;
|
||||
PdtEvaluator.Instance.ContextEvent = null;
|
||||
PdtEvaluator.Instance.ContextState = null;
|
||||
foreach (Transform child in RootTransform) {
|
||||
if (child.CompareTag(TagRootTransform)) continue;
|
||||
_comps.AddRange(child.GetComponentsInChildren<SkinComponent>());
|
||||
@@ -199,11 +199,11 @@ namespace Cryville.Crtr.Event {
|
||||
protected static bool CanDoGraphicalUpdate(ContainerState s) { return s.CloneType >= 2 && s.CloneType < 16; }
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
void MatchDynamic(ContainerState s, int dl) {
|
||||
ChartPlayer.etor.ContextState = s;
|
||||
ChartPlayer.etor.ContextEvent = Container;
|
||||
PdtEvaluator.Instance.ContextState = s;
|
||||
PdtEvaluator.Instance.ContextEvent = Container;
|
||||
skinContainer.MatchDynamic(dl);
|
||||
ChartPlayer.etor.ContextEvent = null;
|
||||
ChartPlayer.etor.ContextState = null;
|
||||
PdtEvaluator.Instance.ContextEvent = null;
|
||||
PdtEvaluator.Instance.ContextState = null;
|
||||
}
|
||||
#endregion
|
||||
#region Anchor
|
||||
|
@@ -462,9 +462,9 @@ namespace Cryville.Crtr.Event {
|
||||
if (transition == null) return new Vector4(time, time, time, time);
|
||||
_ttime = time;
|
||||
_ttimesrc.Invalidate();
|
||||
ChartPlayer.etor.ContextSelfValue = _ttimesrc;
|
||||
ChartPlayer.etor.Evaluate(_transop, transition);
|
||||
ChartPlayer.etor.ContextSelfValue = null;
|
||||
PdtEvaluator.Instance.ContextSelfValue = _ttimesrc;
|
||||
PdtEvaluator.Instance.Evaluate(_transop, transition);
|
||||
PdtEvaluator.Instance.ContextSelfValue = null;
|
||||
return _trans;
|
||||
}
|
||||
|
||||
|
@@ -23,7 +23,7 @@ namespace Cryville.Crtr {
|
||||
_vecsrcs[i] = vecsrc;
|
||||
_vecops[i] = new InputVectorOp(vecsrc);
|
||||
}
|
||||
_etor = judge != null ? judge._etor : ChartPlayer.etor;
|
||||
_etor = judge != null ? judge._etor : PdtEvaluator.Instance;
|
||||
_ruleset = ruleset;
|
||||
_judge = judge;
|
||||
_screenSize = new InputVector(screenSize.x, screenSize.y);
|
||||
|
@@ -11,42 +11,42 @@ namespace Cryville.Crtr {
|
||||
var exp = (PdtExpression)value;
|
||||
if (type.Equals(typeof(bool))) {
|
||||
bool result = false;
|
||||
ChartPlayer.etor.Evaluate(new PropOp.Boolean(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.Boolean(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(int))) {
|
||||
int result = 0;
|
||||
ChartPlayer.etor.Evaluate(new PropOp.Integer(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.Integer(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(float))) {
|
||||
float result = 0;
|
||||
ChartPlayer.etor.Evaluate(new PropOp.Float(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.Float(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(string))) {
|
||||
string result = default(string);
|
||||
ChartPlayer.etor.Evaluate(new PropOp.String(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.String(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.IsEnum) {
|
||||
object result = null;
|
||||
ChartPlayer.etor.Evaluate(new PropOp.Enum(type, r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.Enum(type, r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(Clip))) {
|
||||
Clip result = default(Clip);
|
||||
ChartPlayer.etor.Evaluate(new PropOp.Clip(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new PropOp.Clip(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(Identifier))) {
|
||||
Identifier result = default(Identifier);
|
||||
ChartPlayer.etor.Evaluate(new pop_identstr(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new pop_identstr(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
else if (type.Equals(typeof(Identifier[]))) {
|
||||
Identifier[] result = null;
|
||||
ChartPlayer.etor.Evaluate(new pop_identstrarr(r => result = r), exp);
|
||||
PdtEvaluator.Instance.Evaluate(new pop_identstrarr(r => result = r), exp);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@@ -10,6 +10,15 @@ using UnityEngine;
|
||||
|
||||
namespace Cryville.Crtr {
|
||||
public class PdtEvaluator : PdtEvaluatorBase {
|
||||
[ThreadStatic]
|
||||
static PdtEvaluator m_instance;
|
||||
public static PdtEvaluator Instance {
|
||||
get {
|
||||
if (m_instance == null) m_instance = new PdtEvaluator();
|
||||
return m_instance;
|
||||
}
|
||||
}
|
||||
|
||||
readonly Dictionary<PdtOperatorSignature, PdtOperator> _shortops = new Dictionary<PdtOperatorSignature, PdtOperator>();
|
||||
readonly IntKeyedDictionary<PdtOperator> _ctxops = new IntKeyedDictionary<PdtOperator>();
|
||||
|
||||
@@ -152,6 +161,18 @@ namespace Cryville.Crtr {
|
||||
ContextCascade[--_cascadeHeight].Clear();
|
||||
}
|
||||
|
||||
public void Reset() {
|
||||
_cascadeHeight = 0;
|
||||
ContextCascadeBlocks.Clear();
|
||||
ContextCascadeBlocks.Push(0);
|
||||
ContextEvent = null;
|
||||
ContextJudge = null;
|
||||
ContextSelfValue = null;
|
||||
ContextSkinContainer = null;
|
||||
ContextState = null;
|
||||
ContextTransform = null;
|
||||
}
|
||||
|
||||
public PdtEvaluator() {
|
||||
ContextCascadeBlocks.Push(0);
|
||||
for (int i = 0; i < ContextCascade.Length; i++) ContextCascade[i] = new IntKeyedDictionary<PropSrc>();
|
||||
|
@@ -21,7 +21,7 @@ namespace Cryville.Crtr {
|
||||
var op = GetOperand(0);
|
||||
var value = new byte[op.Length];
|
||||
op.CopyTo(value, 0);
|
||||
ChartPlayer.etor.ContextCascadeUpdate(Name, new PropSrc.Arbitrary(op.Type, value));
|
||||
PdtEvaluator.Instance.ContextCascadeUpdate(Name, new PropSrc.Arbitrary(op.Type, value));
|
||||
}
|
||||
}
|
||||
public class Boolean : PropOp {
|
||||
|
@@ -157,7 +157,7 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
}
|
||||
public void PrePatch(ChartEvent ev) {
|
||||
var etor = ChartPlayer.etor;
|
||||
var etor = PdtEvaluator.Instance;
|
||||
PropSrc src;
|
||||
etor.ContextCascadeInsert();
|
||||
etor.ContextEvent = ev;
|
||||
|
@@ -90,10 +90,10 @@ namespace Cryville.Crtr {
|
||||
etor.Optimize(_exp);
|
||||
}
|
||||
public override IEnumerable<ChartEvent> Match(ChartEvent ev) {
|
||||
ChartPlayer.etor.ContextEvent = ev;
|
||||
if (!ChartPlayer.etor.Evaluate(_op, _exp))
|
||||
PdtEvaluator.Instance.ContextEvent = ev;
|
||||
if (!PdtEvaluator.Instance.Evaluate(_op, _exp))
|
||||
throw new EvaluationFailureException();
|
||||
ChartPlayer.etor.ContextEvent = null;
|
||||
PdtEvaluator.Instance.ContextEvent = null;
|
||||
if (_flag) return new ChartEvent[] { ev };
|
||||
else return null;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -90,10 +90,10 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
void Execute(RuntimeSkinContext ctx, PdtOperator op, PdtExpression exp) {
|
||||
var psrcs = ctx.ReadContext.PropSrcs;
|
||||
if (psrcs != null) ChartPlayer.etor.ContextCascadeInsert(psrcs);
|
||||
if (!ChartPlayer.etor.Evaluate(op, exp))
|
||||
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeInsert(psrcs);
|
||||
if (!PdtEvaluator.Instance.Evaluate(op, exp))
|
||||
throw new EvaluationFailureException();
|
||||
if (psrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
|
||||
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeDiscard();
|
||||
}
|
||||
SkinProperty GetPropOp(Transform obj) {
|
||||
var ctype = Component;
|
||||
@@ -145,10 +145,10 @@ namespace Cryville.Crtr {
|
||||
public override void ExecuteDynamic(ISkinnableGroup group, RuntimeSkinContext ctx, PdtExpression exp, IntKeyedDictionary<SkinVariable> vars, int dl) {
|
||||
if (dl != 1) return;
|
||||
var psrcs = ctx.ReadContext.PropSrcs;
|
||||
if (psrcs != null) ChartPlayer.etor.ContextCascadeInsert(psrcs);
|
||||
if (!ChartPlayer.etor.Evaluate(_timeOp, exp))
|
||||
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeInsert(psrcs);
|
||||
if (!PdtEvaluator.Instance.Evaluate(_timeOp, exp))
|
||||
throw new EvaluationFailureException();
|
||||
if (psrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
|
||||
if (psrcs != null) PdtEvaluator.Instance.ContextCascadeDiscard();
|
||||
group.PushAnchorEvent(_time, Name);
|
||||
}
|
||||
}
|
||||
@@ -170,7 +170,7 @@ namespace Cryville.Crtr {
|
||||
float _index;
|
||||
readonly PropOp _op;
|
||||
public override void ExecuteDynamic(ISkinnableGroup group, RuntimeSkinContext ctx, PdtExpression exp, IntKeyedDictionary<SkinVariable> vars, int dl) {
|
||||
if (!ChartPlayer.etor.Evaluate(_op, exp))
|
||||
if (!PdtEvaluator.Instance.Evaluate(_op, exp))
|
||||
throw new EvaluationFailureException();
|
||||
if (IsSelf) ChartPlayer.effectManager.EmitSelf(Name, _index, ctx.WriteTransform);
|
||||
else ChartPlayer.effectManager.Emit(Name, _index);
|
||||
@@ -189,14 +189,14 @@ namespace Cryville.Crtr {
|
||||
SkinVariable v;
|
||||
if (!vars.TryGetValue(Name, out v))
|
||||
vars.Add(Name, v = new SkinVariable());
|
||||
if (!ChartPlayer.etor.Evaluate(v.Op, exp))
|
||||
if (!PdtEvaluator.Instance.Evaluate(v.Op, exp))
|
||||
throw new EvaluationFailureException();
|
||||
}
|
||||
public override void ExecuteDynamic(ISkinnableGroup group, RuntimeSkinContext ctx, PdtExpression exp, IntKeyedDictionary<SkinVariable> vars, int dl) {
|
||||
SkinVariable v;
|
||||
if (!vars.TryGetValue(Name, out v))
|
||||
throw new InvalidOperationException(string.Format("Variable \"{0}\" not defined", IdentifierManager.Shared.Retrieve(Name)));
|
||||
if (!ChartPlayer.etor.Evaluate(v.Op, exp))
|
||||
if (!PdtEvaluator.Instance.Evaluate(v.Op, exp))
|
||||
throw new EvaluationFailureException();
|
||||
}
|
||||
}
|
||||
|
@@ -129,9 +129,9 @@ namespace Cryville.Crtr {
|
||||
return Match(c);
|
||||
}
|
||||
public SkinContext Match(SkinContext a) {
|
||||
ChartPlayer.etor.ContextTransform = a.Transform;
|
||||
PdtEvaluator.Instance.ContextTransform = a.Transform;
|
||||
try {
|
||||
if (!ChartPlayer.etor.Evaluate(_op, _exp))
|
||||
if (!PdtEvaluator.Instance.Evaluate(_op, _exp))
|
||||
throw new EvaluationFailureException();
|
||||
return _flag ? a : null;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ namespace Cryville.Crtr {
|
||||
throw new SelectorNotAvailableException("The expression is not evaluatable under the current context", ex);
|
||||
}
|
||||
finally {
|
||||
ChartPlayer.etor.ContextTransform = null;
|
||||
PdtEvaluator.Instance.ContextTransform = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user