Example #1
0
static
void    TraverseNode(node *n, gen *igens) {
	if (n->type == TNUM) return;

	if (n->type == TGEN) {
		if (WordGen(n->cont.g) == (void *)0)

			igens[ n->cont.g - NumberOfAbstractGens() ] = 1;

		return;
	}

	TraverseNode(n->cont.op.l, igens);
	TraverseNode(n->cont.op.r, igens);
}
Example #2
0
// Traverse the node counting polygons.  
static void
TraverseNode(INode* node, TimeValue t)
{
    const ObjectState& os = node->EvalWorldState(t);
    Object* ob = os.obj;
    if (ob!=NULL) {
        int numFaces, numVerts;
        GetPolygonCount(t, ob, numFaces, numVerts);
        faceCount += numFaces;
        if (node->Selected())
            selFaceCount += numFaces;
    }

    int i, numChildren = node->NumberOfChildren();
    for(i=0; i<numChildren; i++)
        TraverseNode(node->GetChildNode(i), t);
}
Example #3
0
int  NumberOfIdenticalGensNode(node *n) {
	gen  g,  nr;

	if (IdenticalGenNumberNode != (gen *)0)
		Free(IdenticalGenNumberNode);

	IdenticalGenNumberNode =
	    (gen *)Allocate((NumberOfIdenticalGens() + 1) * sizeof(gen));

	TraverseNode(n, IdenticalGenNumberNode);

	for (nr = 0, g = 1; g <= NumberOfIdenticalGens(); g++)
		if (IdenticalGenNumberNode[ g ] == 1)
			IdenticalGenNumberNode[ g ] = ++nr;

	NrIdenticalGensNode = nr;
	return nr;
}
Example #4
0
// Traverse all the nodes in the scene graph.
static void
CountFaces(Interface* ip)
{
    TraverseNode(ip->GetRootNode(), ip->GetTime());
}