Change state timestamp to double precision.

This commit is contained in:
2022-12-19 14:55:15 +08:00
parent e55642cdeb
commit d7b0ca77e9
9 changed files with 40 additions and 40 deletions

View File

@@ -4,7 +4,7 @@ using System.Collections.Generic;
namespace Cryville.Crtr {
public abstract class StateBase<T> {
public int EventId;
public float Time;
public double Time;
public Chart chart;
public List<T> events;
@@ -18,7 +18,7 @@ namespace Cryville.Crtr {
}
public virtual StateBase<T> Clone() {
return (StateBase<T>)base.MemberwiseClone();
return (StateBase<T>)MemberwiseClone();
}
public virtual void CopyTo(StateBase<T> dest) {
@@ -32,18 +32,18 @@ namespace Cryville.Crtr {
}
public void Forward(Action<T> callback = null) {
ForwardToTime(float.PositiveInfinity, callback);
ForwardToTime(double.PositiveInfinity, callback);
}
public void ForwardByTime(float time, Action<T> callback = null) {
public void ForwardByTime(double time, Action<T> callback = null) {
ForwardToTime(Time + time, callback);
}
public void ForwardOnceByTime(float time, Action<T> callback = null) {
public void ForwardOnceByTime(double time, Action<T> callback = null) {
ForwardOnceToTime(Time + time, callback);
}
public void ForwardToTime(float toTime, Action<T> callback = null) {
public void ForwardToTime(double toTime, Action<T> callback = null) {
breakflag = false;
ForwardOnceToTime(Time, callback);
while (Time < toTime) {
@@ -52,20 +52,20 @@ namespace Cryville.Crtr {
}
}
public void ForwardStepByTime(float time, float step, Action<T> callback = null) {
public void ForwardStepByTime(double time, double step, Action<T> callback = null) {
ForwardStepToTime(Time + time, step, callback);
}
public void ForwardStepToTime(float toTime, float step, Action<T> callback = null) {
public void ForwardStepToTime(double toTime, double step, Action<T> callback = null) {
breakflag = false;
ForwardOnceToTime(Time, callback);
while (Time < toTime) {
float next = Time + step;
double next = Time + step;
ForwardOnceToTime(next < toTime ? next : toTime, callback);
if (breakflag) break;
}
}
public abstract void ForwardOnceToTime(float toTime, Action<T> callback = null);
public abstract void ForwardOnceToTime(double toTime, Action<T> callback = null);
}
}