1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#include "AnimationGraphFactory.h"
namespace animation
{
AnimationGraphFactory::AnimationGraphFactory()
{
}
AnimationGraph* AnimationGraphFactory::createGraph(const std::string& _filename)
{
AnimationGraph* result = 0;
MyGUI::xml::Document doc;
if (doc.open(_filename))
{
MyGUI::xml::Element* root = doc.getRoot();
if (root)
{
result = new AnimationGraph(root->findAttribute("name"));
MyGUI::xml::ElementEnumerator data = root->getElementEnumerator();
while (data.next())
{
if (data->getName() == "Node")
{
IAnimationNode* node = mNodeFactory.createNode(data->findAttribute("type"), data->findAttribute("name"), result);
result->addNode(node);
MyGUI::xml::ElementEnumerator prop = data->getElementEnumerator();
while (prop.next("Property"))
{
std::string key = prop->findAttribute("key");
std::string value = prop->findAttribute("value");
node->setProperty(key, value);
}
}
else if (data->getName() == "Connection")
{
IAnimationNode* from_node = result->getNodeByName(data->findAttribute("from"));
IAnimationNode* to_node = result->getNodeByName(data->findAttribute("to"));
MyGUI::xml::ElementEnumerator point = data->getElementEnumerator();
while (point.next("Point"))
{
from_node->addConnection(
point->findAttribute("from"),
to_node,
point->findAttribute("to"));
}
}
}
}
}
return result;
}
} // namespace animation
|