bool ValueAnimation::LoadJSON(const JSONValue& source) { valueType_ = VAR_NONE; eventFrames_.Clear(); String interpMethodString = source.Get("interpolationmethod").GetString(); InterpMethod method = (InterpMethod)GetStringListIndex(interpMethodString.CString(), interpMethodNames, IM_LINEAR); SetInterpolationMethod(method); if (interpolationMethod_ == IM_SPLINE) splineTension_ = source.Get("splinetension").GetFloat(); // Load keyframes JSONArray keyFramesArray = source.Get("keyframes").GetArray(); for (unsigned i = 0; i < keyFramesArray.Size(); i++) { const JSONValue& val = keyFramesArray[i]; float time = val.Get("time").GetFloat(); Variant value = val.Get("value").GetVariant(); SetKeyFrame(time, value); } // Load event frames JSONArray eventFramesArray = source.Get("eventframes").GetArray(); for (unsigned i = 0; i < eventFramesArray.Size(); i++) { const JSONValue& eventFrameVal = eventFramesArray[i]; float time = eventFrameVal.Get("time").GetFloat(); unsigned eventType = eventFrameVal.Get("eventtype").GetUInt(); VariantMap eventData = eventFrameVal.Get("eventdata").GetVariantMap(); SetEventFrame(time, StringHash(eventType), eventData); } return true; }
bool ValueAnimation::LoadXML(const XMLElement& source) { valueType_ = VAR_NONE; eventFrames_.Clear(); String interpMethodString = source.GetAttribute("interpolationmethod"); InterpMethod method = (InterpMethod)GetStringListIndex(interpMethodString.CString(), interpMethodNames, IM_LINEAR); SetInterpolationMethod(method); if (interpolationMethod_ == IM_SPLINE) splineTension_ = source.GetFloat("splinetension"); XMLElement keyFrameElem = source.GetChild("keyframe"); while (keyFrameElem) { float time = keyFrameElem.GetFloat("time"); Variant value = keyFrameElem.GetVariant(); SetKeyFrame(time, value); keyFrameElem = keyFrameElem.GetNext("keyframe"); } XMLElement eventFrameElem = source.GetChild("eventframe"); while (eventFrameElem) { float time = eventFrameElem.GetFloat("time"); unsigned eventType = eventFrameElem.GetUInt("eventtype"); VariantMap eventData = eventFrameElem.GetChild("eventdata").GetVariantMap(); SetEventFrame(time, StringHash(eventType), eventData); eventFrameElem = eventFrameElem.GetNext("eventframe"); } return true; }
TransferFunction::TransferFunction(InterpolationMethod method) { _r.setHighBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _r.setLowBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _g.setHighBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _g.setLowBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _b.setHighBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _b.setLowBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _a.setHighBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _a.setLowBC(magnet::math::Spline::FIXED_1ST_DERIV_BC, 0); _method = method; SetInterpolationMethod(_method); }