Beispiel #1
0
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 ) {
Beispiel #2
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));
}
Beispiel #3
0
// 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;
}
Beispiel #4
0
void compile_MetadataSFImage (struct X3D_MetadataSFImage *node){ printf ("make compile_Metadata %s\n",stringNodeType(node->_nodeType));}