added Scene::processForNode() to process for nodes

git-svn-id: svn://anubis/fart/branches/scene-file-scripting@332 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop committed 2010-10-04 21:26:12 +00:00
1 parent 71e40b0277
commit 01a713af98
4 files changed
+62 -11

No files matched your search

+39 -8
View File
@@ -255,7 +255,7 @@ vector<ShapeRef> Scene::processTransformBlock(refptr<Node> node)
vector<ShapeRef> Scene::processGeneralItems(refptr<Node> node)
{
vector<ShapeRef> shapes;
vector<ShapeRef> shapes, incoming;
for (Node_Iterator it = node->getChildren().begin();
it != node->getChildren().end();
@@ -263,15 +263,11 @@ vector<ShapeRef> Scene::processGeneralItems(refptr<Node> node)
{
if ((*it)->isTransformBlock())
{
vector<ShapeRef> in = processTransformBlock(*it);
for (int i = 0, sz = in.size(); i < sz; i++)
{
shapes.push_back(in[i]);
}
incoming = processTransformBlock(*it);
}
else if ( typeid(*node) == typeid(MaterialDefinitionNode) )
else if ( typeid(**it) == typeid(MaterialDefinitionNode) )
{
processMaterialDefinition(node);
processMaterialDefinition(*it);
}
else if ( typeid(**it) == typeid(ShapeDefinitionNode) )
{
@@ -281,6 +277,41 @@ vector<ShapeRef> Scene::processGeneralItems(refptr<Node> node)
{
shapes.push_back(processShape(*it));
}
else if ( typeid(**it) == typeid(ForNode) )
{
incoming = processForNode(*it);
}
while (incoming.size() > 0)
{
shapes.push_back(incoming[0]);
incoming.erase(incoming.begin());
}
}
return shapes;
}
vector<ShapeRef> Scene::processForNode(refptr<Node> node)
{
if (!node->getNode(0).isNull())
{
node->getNode(0)->getNumber();
}
vector<ShapeRef> shapes, incoming;
while (node->getNode(1)->getInteger() != 0)
{
incoming = processGeneralItems(node);
while (incoming.size() > 0)
{
shapes.push_back(incoming[0]);
incoming.erase(incoming.begin());
}
if (!node->getNode(2).isNull())
{
node->getNode(2)->getNumber();
}
}
return shapes;
+1
View File
@@ -78,6 +78,7 @@ class Scene
void processOptions(refptr<Node> node);
std::vector<ShapeRef> processTransformBlock(refptr<Node> node);
std::vector<ShapeRef> processGeneralItems(refptr<Node> node);
std::vector<ShapeRef> processForNode(refptr<Node> node);
void processMaterialDefinition(refptr<Node> node);
void processShapeDefinition(refptr<Node> node);