Implement new transition.
This commit is contained in:
@@ -120,6 +120,7 @@ namespace Cryville.Crtr {
|
||||
public bool Reset;
|
||||
public Vec1 Time;
|
||||
public Vec1 EndTime;
|
||||
public PdtExpression Transition;
|
||||
public Vector Value;
|
||||
|
||||
public void Init(Type type) {
|
||||
@@ -135,20 +136,20 @@ namespace Cryville.Crtr {
|
||||
Value.CopyTo(dest.Value);
|
||||
}
|
||||
|
||||
public void LerpWith(MotionNode start, float lerpedTime, ref MotionNode result) {
|
||||
public void LerpWith(MotionNode start, Vector4 trans, ref MotionNode result) {
|
||||
result.Id = Id;
|
||||
if (Time == null) result.Time = start.Time;
|
||||
else {
|
||||
var t = (Vector)result.Time;
|
||||
Time.LerpWith(start.Time, lerpedTime, ref t);
|
||||
Time.LerpWith(start.Time, trans, ref t);
|
||||
}
|
||||
if (EndTime == null) result.EndTime = start.EndTime;
|
||||
else {
|
||||
var t = (Vector)result.EndTime;
|
||||
EndTime.LerpWith(start.EndTime, lerpedTime, ref t);
|
||||
EndTime.LerpWith(start.EndTime, trans, ref t);
|
||||
}
|
||||
if (Value == null) result.Value = start.Value;
|
||||
else Value.LerpWith(start.Value, lerpedTime, ref result.Value);
|
||||
else Value.LerpWith(start.Value, trans, ref result.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,6 +186,7 @@ namespace Cryville.Crtr {
|
||||
|
||||
public abstract void ApplyFrom(Vector parent);
|
||||
public abstract void LerpWith(Vector start, float lerpedTime, ref Vector result);
|
||||
public abstract void LerpWith(Vector start, Vector4 trans, ref Vector result);
|
||||
public abstract override string ToString();
|
||||
public abstract unsafe void ToArray(float* arr);
|
||||
|
||||
@@ -227,6 +229,15 @@ namespace Cryville.Crtr {
|
||||
var s = (Vec1)start;
|
||||
r.Value = s.Value * (1 - lerpedTime) + Value * lerpedTime;
|
||||
}
|
||||
public override void LerpWith(Vector start, Vector4 trans, ref Vector result) {
|
||||
var r = (Vec1)result;
|
||||
if (start == null) {
|
||||
r.Value = Value;
|
||||
return;
|
||||
}
|
||||
var s = (Vec1)start;
|
||||
r.Value = s.Value * (1 - trans.x) + Value * trans.x;
|
||||
}
|
||||
|
||||
public override void CopyTo(Vector dest) {
|
||||
var d = (Vec1)dest;
|
||||
@@ -269,6 +280,15 @@ namespace Cryville.Crtr {
|
||||
var s = (VecI1)start;
|
||||
r.Value = (int)(s.Value * (1 - lerpedTime) + Value * lerpedTime);
|
||||
}
|
||||
public override void LerpWith(Vector start, Vector4 trans, ref Vector result) {
|
||||
var r = (VecI1)result;
|
||||
if (start == null) {
|
||||
r.Value = Value;
|
||||
return;
|
||||
}
|
||||
var s = (VecI1)start;
|
||||
r.Value = (int)(s.Value * (1 - trans.x) + Value * trans.x);
|
||||
}
|
||||
|
||||
public override void CopyTo(Vector dest) {
|
||||
var d = (VecI1)dest;
|
||||
@@ -311,6 +331,15 @@ namespace Cryville.Crtr {
|
||||
var s = (Vec1m)start;
|
||||
r.Value = s.Value * (1 - lerpedTime) + Value * lerpedTime;
|
||||
}
|
||||
public override void LerpWith(Vector start, Vector4 trans, ref Vector result) {
|
||||
var r = (Vec1m)result;
|
||||
if (start == null) {
|
||||
r.Value = Value;
|
||||
return;
|
||||
}
|
||||
var s = (Vec1m)start;
|
||||
r.Value = s.Value * (1 - trans.x) + Value * trans.x;
|
||||
}
|
||||
|
||||
public override void CopyTo(Vector dest) {
|
||||
var d = (Vec1m)dest;
|
||||
@@ -355,6 +384,17 @@ namespace Cryville.Crtr {
|
||||
r.x = s.x * (1 - lerpedTime) + x * lerpedTime;
|
||||
r.y = s.y * (1 - lerpedTime) + y * lerpedTime;
|
||||
}
|
||||
public override void LerpWith(Vector start, Vector4 trans, ref Vector result) {
|
||||
var r = (Vec2)result;
|
||||
if (start == null) {
|
||||
r.x = x;
|
||||
r.y = y;
|
||||
return;
|
||||
}
|
||||
var s = (Vec2)start;
|
||||
r.x = s.x * (1 - trans.x) + x * trans.x;
|
||||
r.y = s.y * (1 - trans.y) + y * trans.y;
|
||||
}
|
||||
|
||||
public Vector3 ToVector2() {
|
||||
return new Vector3(x, y);
|
||||
@@ -406,6 +446,19 @@ namespace Cryville.Crtr {
|
||||
r.y = s.y * (1 - lerpedTime) + y * lerpedTime;
|
||||
r.z = s.z * (1 - lerpedTime) + z * lerpedTime;
|
||||
}
|
||||
public override void LerpWith(Vector start, Vector4 trans, ref Vector result) {
|
||||
var r = (Vec3)result;
|
||||
if (start == null) {
|
||||
r.x = x;
|
||||
r.y = y;
|
||||
r.z = z;
|
||||
return;
|
||||
}
|
||||
var s = (Vec3)start;
|
||||
r.x = s.x * (1 - trans.x) + x * trans.x;
|
||||
r.y = s.y * (1 - trans.y) + y * trans.y;
|
||||
r.z = s.z * (1 - trans.z) + z * trans.z;
|
||||
}
|
||||
|
||||
public Vector3 ToVector3() {
|
||||
return new Vector3(x, y, z);
|
||||
@@ -428,7 +481,7 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
|
||||
public unsafe class VectorSrc : PropSrc.FixedBuffer {
|
||||
const int MAX_DIMENSION = 8;
|
||||
const int MAX_DIMENSION = 4;
|
||||
protected readonly Func<Vector> _cb;
|
||||
public VectorSrc(Func<Vector> cb) : base(PdtInternalType.Vector, MAX_DIMENSION * sizeof(float) + sizeof(int)) {
|
||||
_cb = cb;
|
||||
|
Reference in New Issue
Block a user