void update_node(struct X3D_Node *node) { int i; #ifdef VERBOSE printf ("update_node for %d %s nparents %d renderflags %x\n",node, stringNodeType(node->_nodeType),node->_nparents, node->_renderFlags); if (node->_nparents == 0) { if (node == rootNode) printf ("...no parents, this IS the rootNode\n"); else printf ("...no parents, this IS NOT the rootNode\n"); } for (i = 0; i < node->_nparents; i++) { struct X3D_Node *n = X3D_NODE(node->_parents[i]); if( n != 0 ) { printf (" parent %u is %s\n",n,stringNodeType(n->_nodeType)); } else { printf (" parent %d is NULL\n",i); } } #endif node->_change ++; /* parentVector here yet?? */ if (node->_parentVector == NULL) { return; } for (i = 0; i < vectorSize(node->_parentVector); i++) { struct X3D_Node *n = vector_get(struct X3D_Node *, node->_parentVector,i); if(n == node) { fprintf(stderr, "Error: self-referential node structure! (node:'%s')\n", stringNodeType(node->_nodeType)); vector_set(struct X3D_Node*, node->_parentVector, i,NULL); } else if( n != 0 ) {
void printTrieNode(FILE *fp, BTNptr pTN) { fprintf(fp, "Trie Node: Addr(%p)", pTN); if ( IsDeletedNode(pTN) ) fprintf(fp, " (DELETED)"); fprintf(fp, "\n\tInstr(%s), Status(%s), NodeType(%s),\n" "\tTrieType(%s), Symbol(", inst_name(TN_Instr(pTN)), stringNodeStatus(TN_Status(pTN)), stringNodeType(TN_NodeType(pTN)), stringTrieType(TN_TrieType(pTN))); printTrieSymbol(fp, TN_Symbol(pTN)); fprintf(fp, ")"); if ( IsInTimeStampedTrie(pTN) ) fprintf(fp, ", TimeStamp(%ld)", TSTN_TimeStamp((TSTNptr)pTN)); fprintf(fp, "\n\tParent(%p), Child(%p), Sibling(%p)\n", TN_Parent(pTN), TN_Child(pTN), TN_Sibling(pTN)); }
// see if the Appearance node has a valid Shader node as a child. static int hasUserDefinedShader(struct X3D_Node *node) { #define NO_SHADER 99999 unsigned int rv = NO_SHADER; if (node==NULL) return 0; //ConsoleMessage ("hasUserDeginedShader, node ptr %p",node); //ConsoleMessage ("hasUserDefinedShader, nodeType %s",stringNodeType(node->_nodeType)); if (node->_nodeType == NODE_Appearance) { struct X3D_Appearance *ap; POSSIBLE_PROTO_EXPANSION(struct X3D_Appearance *, node, ap); //ConsoleMessage ("appearance node shaders is %d %p",ap->shaders.n, ap->shaders.p); if (ap->shaders.n != 0) { struct X3D_ComposedShader *cps; /* ok - what kind of node is here, and are there more than two? */ if (ap->shaders.n > 1) { ConsoleMessage ("warning, Appearance->shaders has more than 1 node, using only first one"); } POSSIBLE_PROTO_EXPANSION(struct X3D_ComposedShader *, ap->shaders.p[0], cps); //ConsoleMessage ("node type of shaders is :%s:",stringNodeType(cps->_nodeType)); if (cps->_nodeType == NODE_ComposedShader) { // might be set in compile_Shader already //ConsoleMessage ("cps->_initialized %d",cps->_initialized); //ConsoleMessage ("cps->_retrievedURLData %d",cps->_retrievedURLData); if (cps->_retrievedURLData) { if (cps->_shaderUserNumber == -1) cps->_shaderUserNumber = getNextFreeUserDefinedShaderSlot(); rv = cps->_shaderUserNumber; } } else if (cps->_nodeType == NODE_PackagedShader) { // might be set in compile_Shader already if (X3D_PACKAGEDSHADER(cps)->_retrievedURLData) { if (X3D_PACKAGEDSHADER(cps)->_shaderUserNumber == -1) X3D_PACKAGEDSHADER(cps)->_shaderUserNumber = getNextFreeUserDefinedShaderSlot(); rv = X3D_PACKAGEDSHADER(cps)->_shaderUserNumber; } } else if (cps->_nodeType == NODE_ProgramShader) { // might be set in compile_Shader already if (X3D_PROGRAMSHADER(cps)->_retrievedURLData) { if (X3D_PROGRAMSHADER(cps)->_shaderUserNumber == -1) X3D_PROGRAMSHADER(cps)->_shaderUserNumber = getNextFreeUserDefinedShaderSlot(); rv = X3D_PROGRAMSHADER(cps)->_shaderUserNumber; } } else { ConsoleMessage ("shader field of Appearance is a %s, ignoring",stringNodeType(cps->_nodeType)); } } } //ConsoleMessage ("and ste is %d",ste); // ok - did we find an integer between 0 and some MAX_SUPPORTED_USER_SHADERS value? if (rv == NO_SHADER) rv = 0; else rv = USER_DEFINED_SHADER_START * (rv+1); //ConsoleMessage ("rv is going to be %x",rv); //ConsoleMessage ("hasUserDefinedShader, returning %p",*shaderTableEntry); return rv; }
void compile_MetadataSFImage (struct X3D_MetadataSFImage *node){ printf ("make compile_Metadata %s\n",stringNodeType(node->_nodeType));}