/// <summary> Retrieves the key at index. (Read Only) </summary> /// <param name="index">Index of key</param> /// <returns>Key</returns> public Keyframe3D this[int index] { get { Keyframe3D key = new Keyframe3D(); key.Time = _CurveX[index].time; key.Value = new Vector3(_CurveX[index].value, _CurveY[index].value, _CurveZ[index].value); key.InTangent = new Vector3(_CurveX[index].inTangent, _CurveY[index].inTangent, _CurveZ[index].inTangent); key.OutTangent = new Vector3(_CurveX[index].outTangent, _CurveY[index].outTangent, _CurveZ[index].outTangent); return(key); } }
/// <summary> /// Removes the keyframe at index and inserts key. /// </summary> /// <param name="index">Index of key</param> /// <param name="key">Keyframe to insert</param> /// <returns>Returns the index of the keyframe after moving it.</returns> /// <remarks> /// If a keyframe already exists at /key.time/ the time of the old keyframe's position /key[index].time/ will be used instead. This is the desired behaviour for dragging keyframes in a curve editor. /// </remarks> public int MoveKey(int index, Keyframe3D key) { _CurveX.MoveKey(index, new Keyframe() { time = key.Time, value = key.Value.x, inTangent = key.InTangent.x, outTangent = key.OutTangent.x }); _CurveY.MoveKey(index, new Keyframe() { time = key.Time, value = key.Value.y, inTangent = key.InTangent.y, outTangent = key.OutTangent.y }); return(_CurveZ.MoveKey(index, new Keyframe() { time = key.Time, value = key.Value.z, inTangent = key.InTangent.z, outTangent = key.OutTangent.z })); }
public static AnimationCurve3D Create(AnimationCurve xCurve, AnimationCurve yCurve, AnimationCurve zCurve) { Keyframe[] xKeys = xCurve.keys; Keyframe[] yKeys = yCurve.keys; Keyframe[] zKeys = zCurve.keys; Keyframe3D[] keys = new Keyframe3D[xKeys.Length]; for (int i = 0; i < xKeys.Length; i++) { keys[i].Time = xKeys[i].time; keys[i].Value = new Vector3(xKeys[i].value, yKeys[i].value, zKeys[i].value); keys[i].InTangent = new Vector3(xKeys[i].inTangent, yKeys[i].inTangent, zKeys[i].inTangent); keys[i].OutTangent = new Vector3(xKeys[i].outTangent, yKeys[i].outTangent, zKeys[i].outTangent); } return(new AnimationCurve3D(keys)); }
/// <summary> Retrieves a copy of all keys defined in the animation curve. (Read Only) </summary> public Keyframe3D[] GetKeys() { Keyframe[] xKeys = _CurveX.keys; Keyframe[] yKeys = _CurveY.keys; Keyframe[] zKeys = _CurveZ.keys; Keyframe3D[] keys = new Keyframe3D[Length]; for (int i = 0; i < Length; i++) { keys[i] = new Keyframe3D(); keys[i].Time = xKeys[i].time; keys[i].Value = new Vector3(xKeys[i].value, yKeys[i].value, zKeys[i].value); keys[i].InTangent = new Vector3(xKeys[i].inTangent, yKeys[i].inTangent, zKeys[i].inTangent); keys[i].OutTangent = new Vector3(xKeys[i].outTangent, yKeys[i].outTangent, zKeys[i].outTangent); } return(keys); }
public void AddKey(Keyframe3D key) { Keyframe keyframe = new Keyframe(); keyframe.time = key.Time; keyframe.inTangent = key.InTangent.x; keyframe.outTangent = key.OutTangent.x; keyframe.value = key.Value.x; _CurveX.AddKey(keyframe); keyframe.inTangent = key.InTangent.y; keyframe.outTangent = key.OutTangent.y; keyframe.value = key.Value.y; _CurveY.AddKey(keyframe); keyframe.inTangent = key.InTangent.z; keyframe.outTangent = key.OutTangent.z; keyframe.value = key.Value.z; _CurveZ.AddKey(keyframe); }