summaryrefslogtreecommitdiffstats
path: root/src/animation/backend/fcurve.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/animation/backend/fcurve.cpp')
-rw-r--r--src/animation/backend/fcurve.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/animation/backend/fcurve.cpp b/src/animation/backend/fcurve.cpp
index 56145c726..4a2cf30fd 100644
--- a/src/animation/backend/fcurve.cpp
+++ b/src/animation/backend/fcurve.cpp
@@ -126,16 +126,21 @@ void FCurve::read(const QJsonObject &json)
float localTime = keyframeCoords.at(0).toDouble();
Keyframe keyframe;
- keyframe.interpolation = QKeyFrame::BezierInterpolation;
keyframe.value = keyframeCoords.at(1).toDouble();
- const QJsonArray leftHandle = keyframeData[QLatin1String("leftHandle")].toArray();
- keyframe.leftControlPoint[0] = leftHandle.at(0).toDouble();
- keyframe.leftControlPoint[1] = leftHandle.at(1).toDouble();
+ if (keyframeData.contains(QLatin1String("leftHandle"))) {
+ keyframe.interpolation = QKeyFrame::BezierInterpolation;
- const QJsonArray rightHandle = keyframeData[QLatin1String("rightHandle")].toArray();
- keyframe.rightControlPoint[0] = rightHandle.at(0).toDouble();
- keyframe.rightControlPoint[1] = rightHandle.at(1).toDouble();
+ const QJsonArray leftHandle = keyframeData[QLatin1String("leftHandle")].toArray();
+ keyframe.leftControlPoint[0] = leftHandle.at(0).toDouble();
+ keyframe.leftControlPoint[1] = leftHandle.at(1).toDouble();
+
+ const QJsonArray rightHandle = keyframeData[QLatin1String("rightHandle")].toArray();
+ keyframe.rightControlPoint[0] = rightHandle.at(0).toDouble();
+ keyframe.rightControlPoint[1] = rightHandle.at(1).toDouble();
+ } else {
+ keyframe.interpolation = QKeyFrame::LinearInterpolation;
+ }
appendKeyframe(localTime, keyframe);
}