From: Helge Norberg Date: Mon, 13 Feb 2017 17:06:15 +0000 (+0100) Subject: [scene_producer] Made it possible for keyframe values to be expressions instead of... X-Git-Tag: 2.1.0_Beta2~91 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=cfc2713aa265cf40fb255584ad232e0db32cf236;hp=1176084924e43ef406dc740246bf018de61f2145;p=casparcg [scene_producer] Made it possible for keyframe values to be expressions instead of only constants --- diff --git a/core/producer/scene/xml_scene_producer.cpp b/core/producer/scene/xml_scene_producer.cpp index c2653dfcb..6edd566ec 100644 --- a/core/producer/scene/xml_scene_producer.cpp +++ b/core/producer/scene/xml_scene_producer.cpp @@ -225,7 +225,8 @@ spl::shared_ptr create_xml_scene_producer( { ptree_verify_element_name(elem, L"timeline"); - auto& variable = scene->get_variable(ptree_get(elem.second, L".variable")); + auto variable_name = ptree_get(elem.second, L".variable"); + auto& variable = scene->get_variable(variable_name); for (auto& k : elem.second) { @@ -237,10 +238,12 @@ spl::shared_ptr create_xml_scene_producer( auto easing = k.second.get(L".easing", L""); auto at = ptree_get(k.second, L".at"); + auto keyframe_variable_name = L"timeline." + variable_name + L"." + boost::lexical_cast(at); + if (variable.is()) - scene->add_keyframe(variable.as(), ptree_get_value(k.second), at, easing); + scene->add_keyframe(variable.as(), scene->create_variable(keyframe_variable_name, false, ptree_get_value(k.second)), at, easing); else if (variable.is()) - scene->add_keyframe(variable.as(), ptree_get_value(k.second), at, easing); + scene->add_keyframe(variable.as(), scene->create_variable(keyframe_variable_name, false, ptree_get_value(k.second)), at, easing); } } }