static void EmitVertexes_r (node_t* node) { if (node->planenum == PLANENUM_LEAF) return; for (face_t* f = node->faces; f; f = f->next) EmitFaceVertexes(node, f); for (int i = 0; i < 2; i++) EmitVertexes_r(node->children[i]); }
/* ============ WriteBSP ============ */ void WriteBSP (node_t *headnode, face_t *pLeafFaceList ) { int i; int oldfaces; int oldorigfaces; c_nofaces = 0; c_facenodes = 0; qprintf ("--- WriteBSP ---\n"); oldfaces = numfaces; oldorigfaces = numorigfaces; GetEdge2_InitOptimizedList(); EmitLeafFaces( pLeafFaceList ); dmodels[nummodels].headnode = EmitDrawNode_r (headnode); // Only emit area portals for the main world. if( nummodels == 0 ) { EmitAreaPortals (headnode); } // // add all displacement faces for the particular model // for( i = 0; i < nummapdispinfo; i++ ) { int entityIndex = GetDispInfoEntityNum( &mapdispinfo[i] ); if( entityIndex == entity_num ) { EmitFaceVertexes( NULL, &mapdispinfo[i].face ); EmitFace( &mapdispinfo[i].face, FALSE ); } } EmitWaterVolumesForBSP( &dmodels[nummodels], headnode ); qprintf ("%5i nodes with faces\n", c_facenodes); qprintf ("%5i nodes without faces\n", c_nofaces); qprintf ("%5i faces\n", numfaces-oldfaces); qprintf( "%5i original faces\n", numorigfaces-oldorigfaces ); }