Make long motion events standalone to avoid transition overflow.

This commit is contained in:
2023-05-25 14:59:02 +08:00
parent 17042b6664
commit 5b510fa5da
2 changed files with 14 additions and 5 deletions

View File

@@ -9,6 +9,12 @@ using System.Linq;
using UnsafeIL;
namespace Cryville.Crtr {
[Flags]
public enum CoeventMode {
None = 0x0,
Coevent = 0x1,
Standalone = 0x2,
}
public abstract class ChartEvent {
public BeatTime? time;
@@ -36,7 +42,7 @@ namespace Cryville.Crtr {
public abstract int Priority { get; }
[JsonIgnore]
public virtual bool Standalone { get { return false; } }
public virtual CoeventMode CoeventMode { get { return CoeventMode.Coevent; } }
public ChartEvent Clone() {
return (ChartEvent)MemberwiseClone();
@@ -279,6 +285,7 @@ namespace Cryville.Crtr {
public float sumfix = 0.0f;
public override int Priority { get { return 0x1000; } }
public override CoeventMode CoeventMode { get { return IsLong ? CoeventMode.Standalone : CoeventMode.Coevent; } }
public Motion() {
SubmitPropOp("motion", new PropOp.String(v => motion = v)); // TODO Obsolete
@@ -327,7 +334,7 @@ namespace Cryville.Crtr {
#pragma warning restore IDE1006
public override int Priority { get { return 0; } }
public override bool Standalone { get { return true; } }
public override CoeventMode CoeventMode { get { return CoeventMode.Standalone; } }
public Judge() {
SubmitPropSrc("name", new PropSrc.Identifier(() => Id.Key));