moved Node::evaluateChildren() to nodes.cc, added EvaluatePropagateNode support
git-svn-id: svn://anubis/fart/branches/scene-file-scripting@340 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
parent
18886ef767
commit
4d488b9e55
@ -9,6 +9,35 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
void Node::evaluateChildren(refptr<Node> parent)
|
||||
{
|
||||
/* recursively evaluate all children nodes */
|
||||
for (std::vector< refptr<Node> >::iterator it = m_children.begin();
|
||||
it != m_children.end();
|
||||
it++)
|
||||
{
|
||||
refptr<Node> evaluated = (*it)->evaluate();
|
||||
if ( ! evaluated.isNull() )
|
||||
{
|
||||
if (typeid(*evaluated) == typeid(EvaluatePropagateNode))
|
||||
{
|
||||
for (vector<NodeRef>::iterator it2
|
||||
= evaluated->getChildren().begin();
|
||||
it2 != evaluated->getChildren().end();
|
||||
it2++)
|
||||
{
|
||||
parent->addChild(*it2);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*it)->evaluateChildren(evaluated);
|
||||
parent->addChild(evaluated);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Node::addChildren(NodeRef other)
|
||||
{
|
||||
if (other.isNull())
|
||||
|
@ -44,21 +44,7 @@ class Node
|
||||
std::cerr << "Warning: Node::evaluate() called!" << std::endl;
|
||||
return NULL;
|
||||
}
|
||||
virtual void evaluateChildren(refptr<Node> parent)
|
||||
{
|
||||
/* recursively evaluate all children nodes */
|
||||
for (std::vector< refptr<Node> >::iterator it = m_children.begin();
|
||||
it != m_children.end();
|
||||
it++)
|
||||
{
|
||||
refptr<Node> evaluated = (*it)->evaluate();
|
||||
if ( ! evaluated.isNull() )
|
||||
{
|
||||
(*it)->evaluateChildren(evaluated);
|
||||
parent->addChild(evaluated);
|
||||
}
|
||||
}
|
||||
}
|
||||
virtual void evaluateChildren(refptr<Node> parent);
|
||||
|
||||
virtual bool isShape() { return false; }
|
||||
virtual bool isMaterial() { return false; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user