Fix "at anchor" selector not working in effects.

This commit is contained in:
2023-03-30 14:16:25 +08:00
parent ee4b0c5483
commit 0c796c4d7a
7 changed files with 32 additions and 23 deletions

View File

@@ -127,6 +127,7 @@ namespace Cryville.Crtr.Event {
ChartPlayer.etor.ContextState = ps;
ChartPlayer.etor.ContextEvent = Container;
skinContainer.MatchStatic();
MatchDynamic(ps, 0);
ChartPlayer.etor.ContextEvent = null;
ChartPlayer.etor.ContextState = null;
_comps = RootTransform.GetComponentsInChildren<SkinComponent>();
@@ -161,7 +162,7 @@ namespace Cryville.Crtr.Event {
tev.Target.Transform.position = Position;
tev.Target.Transform.rotation = Rotation;
#endif
MatchDynamic(s, 1);
MatchDynamic(s, 2);
CloseAnchor();
}
if (tev.Target == a_head) {
@@ -172,7 +173,7 @@ namespace Cryville.Crtr.Event {
}
anchorEvPool.Return(tev);
}
else if (RootTransform && s.CloneType == 2) MatchDynamic(s, 1);
else if (RootTransform && s.CloneType == 2) MatchDynamic(s, 2);
}
#region End methods
protected virtual void EndGraphicalUpdate(ContainerState s) { }
@@ -204,7 +205,7 @@ namespace Cryville.Crtr.Event {
foreach (var a in DynamicAnchors) DynamicAnchorSetTime[a.Key] = double.NaN;
atime_head = cs.StampedContainer.Time;
atime_tail = atime_head + cs.StampedContainer.Duration;
MatchDynamic(cs, 0);
MatchDynamic(cs, 1);
foreach (var i in _comps) i.Tick(skinContainer, cs.Time);
if (cs.Active) PushAnchorEvent(cs.Time, a_cur);
if (double.IsNaN(DynamicAnchorSetTime[_a_head])) DynamicAnchorSetTime[_a_head] = atime_head;
@@ -242,6 +243,7 @@ namespace Cryville.Crtr.Event {
#region ISkinnableGroup
public abstract string TypeName { get; }
public SkinContext SkinContext { get; private set; }
public int AtAnchorDynamicLevel { get { return 2; } }
Anchor _openedAnchor;
public int OpenedAnchorName { get { return _openedAnchor == null ? 0 : _openedAnchor.Name; } }
public bool TryGetAnchorsByName(int name, out IReadOnlyCollection<Anchor> result) {