From cfc2713aa265cf40fb255584ad232e0db32cf236 Mon Sep 17 00:00:00 2001 From: Helge Norberg Date: Mon, 13 Feb 2017 18:06:15 +0100 Subject: [PATCH] [scene_producer] Made it possible for keyframe values to be expressions instead of only constants --- core/producer/scene/xml_scene_producer.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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); } } } -- 2.39.2