/* Traverses the DAG structure and draws the nodes */ void traverse_dag(const SceneNode *node, ppogl::Material *mat) { PP_CHECK_POINTER( node ); gl::PushMatrix(); gl::MultMatrix(node->trans); if ( node->mat != NULL ) { mat = node->mat; } if ( node->isSphere == true ) { set_material( mat->diffuse, mat->specular, mat->getSpecularExponent() ); gl::CallList(get_sphere_display_list(node->sphere.divisions)); } SceneNode *child = node->child; while (child != NULL) { traverse_dag( child, mat ); child = child->next; } gl::PopMatrix(); }
void draw_scene_graph(const char *node ) { scene_node_t *nodePtr; if ( get_scene_node( node, &nodePtr ) != TCL_OK ) { handle_error( 1, "draw_scene_graph: No such node `%s'", node ); } traverse_dag( nodePtr, &g_hier_default_material ); }
void draw_scene_graph(const std::string& node) { SceneNode *nodePtr; if(get_scene_node( node, &nodePtr ) != true){ PP_ERROR( "draw_scene_graph: No such node: " << node); } traverse_dag( nodePtr, &g_hier_default_material ); }