bool ValueAnimation::SaveJSON(JSONValue& dest) const { dest.Set("interpolationmethod", interpMethodNames[interpolationMethod_]); if (interpolationMethod_ == IM_SPLINE) dest.Set("splinetension", (float) splineTension_); JSONArray keyFramesArray; keyFramesArray.Reserve(keyFrames_.Size()); for (unsigned i = 0; i < keyFrames_.Size(); ++i) { const VAnimKeyFrame& keyFrame = keyFrames_[i]; JSONValue keyFrameVal; keyFrameVal.Set("time", keyFrame.time_); JSONValue valueVal; valueVal.SetVariant(keyFrame.value_); keyFrameVal.Set("value", valueVal); keyFramesArray.Push(keyFrameVal); } dest.Set("keyframes", keyFramesArray); JSONArray eventFramesArray; eventFramesArray.Reserve(eventFrames_.Size()); for (unsigned i = 0; i < eventFrames_.Size(); ++i) { const VAnimEventFrame& eventFrame = eventFrames_[i]; JSONValue eventFrameVal; eventFrameVal.Set("time", eventFrame.time_); eventFrameVal.Set("eventtype", eventFrame.eventType_.Value()); JSONValue eventDataVal; eventDataVal.SetVariantMap(eventFrame.eventData_); eventFrameVal.Set("eventdata", eventDataVal); eventFramesArray.Push(eventFrameVal); } dest.Set("eventframes", eventFramesArray); return true; }