Obsolete transition and rate, and add end time for relative motion node.

This commit is contained in:
2023-04-18 09:33:47 +08:00
parent 17d620ff0c
commit f4411629e4
7 changed files with 119 additions and 44 deletions

View File

@@ -132,8 +132,7 @@ namespace Cryville.Crtr {
new MotionNode() {
Id = 0,
Time = new Vec1(0),
Transition = TransitionType.Ease,
Rate = new Vec1(1),
EndTime = new Vec1(0),
Value = init
}
};
@@ -181,9 +180,8 @@ namespace Cryville.Crtr {
cnode = new MotionNode {
Id = node.Id,
Time = new Vec1(0),
Transition = TransitionType.Ease,
Rate = new Vec1(1),
Value = (Vector)Activator.CreateInstance(node.Value.GetType())
EndTime = new Vec1(0),
Value = (Vector)Activator.CreateInstance(AbsoluteValue.GetType())
};
}
else {
@@ -191,8 +189,7 @@ namespace Cryville.Crtr {
RelativeNodes.RemoveAt(i);
}
if (node.Time != null) cnode.Time = node.Time;
if (node.Transition != null) cnode.Transition = node.Transition;
if (node.Rate != null) cnode.Rate = node.Rate;
if (node.EndTime != null) cnode.EndTime = node.EndTime;
if (node.Value != null) cnode.Value.ReplaceFrom(node.Value);
int i2 = RelativeNodes.BinarySearch(cnode);
@@ -207,6 +204,7 @@ namespace Cryville.Crtr {
/// <param name="reltime">The relative time.</param>
/// <param name="result">The result.</param>
/// <returns></returns>
[Obsolete]
public void GetValue<T>(float reltime, ref T result) where T : Vector {
int i = BinarySearch(reltime);
if (i >= 0) RelativeNodes[i].Value.CopyTo(result);
@@ -243,7 +241,9 @@ namespace Cryville.Crtr {
public class MotionNode : IComparable<MotionNode> {
public short Id = -1;
public bool Reset;
public Vec1 Time;
public Vec1 EndTime;
float CmpTime { get { return Time != null ? Time.Value : 0; } }
[Obsolete]
public TransitionType? Transition;
@@ -255,8 +255,7 @@ namespace Cryville.Crtr {
return new MotionNode() {
Id = Id,
Time = (Vec1)Time.Clone(),
Transition = Transition,
Rate = (Vec1)Rate.Clone(),
EndTime = (Vec1)EndTime.Clone(),
Value = Value.Clone()
};
}
@@ -264,8 +263,7 @@ namespace Cryville.Crtr {
public void CopyTo(MotionNode dest) {
dest.Id = Id;
Time.CopyTo(dest.Time);
dest.Transition = Transition;
Rate.CopyTo(dest.Rate);
EndTime.CopyTo(dest.EndTime);
Value.CopyTo(dest.Value);
}
@@ -280,12 +278,10 @@ namespace Cryville.Crtr {
var t = (Vector)result.Time;
Time.LerpWith(start.Time, lerpedTime, ref t);
}
if (Transition == null) result.Transition = start.Transition;
else result.Transition = Transition;
if (Rate == null) result.Rate = start.Rate;
if (EndTime == null) result.EndTime = start.EndTime;
else {
var t = (Vector)result.Rate;
Rate.LerpWith(start.Rate, lerpedTime, ref t);
var t = (Vector)result.EndTime;
EndTime.LerpWith(start.EndTime, lerpedTime, ref t);
}
if (Value == null) result.Value = start.Value;
else Value.LerpWith(start.Value, lerpedTime, ref result.Value);