class LOTAnimInfo
{
public:
- bool hasKeyFrame(int frameNo) {
- if (frameNo >= mStartFrame && frameNo <= mEndFrame)
- return true;
- else
- return false;
- }
T value(int frameNo) const {
- if (mStartFrame >= frameNo)
+ if (mKeyFrames.front().mStartFrame >= frameNo)
return mKeyFrames.front().mStartValue;
- if(mEndFrame <= frameNo)
+ if(mKeyFrames.back().mEndFrame <= frameNo)
return mKeyFrames.back().mEndValue;
for(auto keyFrame : mKeyFrames) {
- if (frameNo >= keyFrame.mStartFrame && frameNo <= keyFrame.mEndFrame)
+ if (frameNo >= keyFrame.mStartFrame && frameNo < keyFrame.mEndFrame)
return keyFrame.value(frameNo);
}
return T();
}
public:
std::vector<LOTKeyFrame<T>> mKeyFrames;
- int mStartFrame;
- int mEndFrame;
};
template<typename T>
inTangent = VPointF();
outTangent = VPointF();
keyframe.mEndValue = keyframe.mStartValue;
+ keyframe.mEndFrame = keyframe.mStartFrame;
}
// Try to find the interpolator from cache
keyframe.mInterpolator = std::make_shared<VInterpolator>(VInterpolator(inTangent, outTangent));
compRef->mInterpolatorCache[interpolatorKey] = keyframe.mInterpolator;
}
- } else {
- /* this is the last key frame. update the first and last frame of this property */
- obj.mStartFrame = obj.mKeyFrames.front().mStartFrame;
- obj.mEndFrame = keyframe.mStartFrame;
- return;
+ obj.mKeyFrames.push_back(keyframe);
}
- obj.mKeyFrames.push_back(keyframe);
}