/*
==================
MakeTreePortals_r
==================
*/
void MakeTreePortals_r( node_t *node ) {
	int		i;
	CalcNodeBounds( node );
	if( node->bounds[0][0] >= node->bounds[1][0] ) {
		common->Warning( "node without a volume" );
	}
	for( i = 0; i < 3; i++ ) {
		if( node->bounds[0][i] < MIN_WORLD_COORD || node->bounds[1][i] > MAX_WORLD_COORD ) {
			common->Warning( "node with unbounded volume" );
			break;
		}
	}
	if( node->planenum == PLANENUM_LEAF ) {
		return;
	}
	MakeNodePortal( node );
	SplitNodePortals( node );
	MakeTreePortals_r( node->children[0] );
	MakeTreePortals_r( node->children[1] );
}
示例#2
0
void MakeTreePortals_r(node_t *node)
{
	int i;

#ifdef ME
	qprintf("\r%6d", ++c_numportalizednodes);

	if(cancelconversion)
	{
		return;
	}

#endif //ME

	CalcNodeBounds(node);

	if(node->mins[0] >= node->maxs[0])
	{
		Log_Print("WARNING: node without a volume\n");
	}

	for(i = 0 ; i < 3 ; i++)
	{
		if(node->mins[i] < -MAX_MAP_BOUNDS || node->maxs[i] > MAX_MAP_BOUNDS)
		{
			Log_Print("WARNING: node with unbounded volume\n");
			break;
		}
	}

	if(node->planenum == PLANENUM_LEAF)
	{
		return;
	}

	MakeNodePortal(node);
	SplitNodePortals(node);

	MakeTreePortals_r(node->children[0]);
	MakeTreePortals_r(node->children[1]);
} //end of the function MakeTreePortals_r
示例#3
0
/*
 * @brief
 */
static void MakeTreePortals_r(node_t * node) {
    int32_t i;

    CalcNodeBounds(node);
    if (node->mins[0] >= node->maxs[0]) {
        Com_Verbose("WARNING: node without a volume\n");
    }

    for (i = 0; i < 3; i++) {
        if (node->mins[i] < -8000 || node->maxs[i] > 8000) {
            Com_Verbose("WARNING: node with unbounded volume\n");
            break;
        }
    }
    if (node->plane_num == PLANENUM_LEAF)
        return;

    MakeNodePortal(node);
    SplitNodePortals(node);

    MakeTreePortals_r(node->children[0]);
    MakeTreePortals_r(node->children[1]);
}
示例#4
0
/*
==================
MakeTreePortals_r
==================
*/
void MakeTreePortals_r (node_t *node)
{
	int		i;

	CalcNodeBounds (node);
	if (node->mins[0] >= node->maxs[0])
	{
		Warning("WARNING: node without a volume\n");
	}

	for (i=0 ; i<3 ; i++)
	{
		if (node->mins[i] < (MIN_COORD_INTEGER-SIDESPACE) || node->maxs[i] > (MAX_COORD_INTEGER+SIDESPACE))
		{
			const char *pMatName = "<NO BRUSH>";
			// split by brush side
			if ( node->side )
			{
				texinfo_t *pTexInfo = &texinfo[node->side->texinfo];
				dtexdata_t *pTexData = GetTexData( pTexInfo->texdata );
				pMatName = TexDataStringTable_GetString( pTexData->nameStringTableID );
			}
			Vector point = node->portals->winding->p[0];
			Warning("WARNING: BSP node with unbounded volume (material: %s, near %s)\n", pMatName, VecToString(point) );
			break;
		}
	}
	if (node->planenum == PLANENUM_LEAF)
		return;

	MakeNodePortal (node);
	SplitNodePortals (node);

	MakeTreePortals_r (node->children[0]);
	MakeTreePortals_r (node->children[1]);
}
示例#5
0
文件: portals.c 项目: kevlund/ufoai
static void MakeTreePortals_r (node_t *node)
{
	int i;

	CalcNodeBounds(node);
	if (node->mins[0] >= node->maxs[0]) {
		Com_Printf("WARNING: node without a volume\n");
	}

	for (i = 0; i < 3; i++) {
		if (node->mins[i] < -MAX_WORLD_WIDTH || node->maxs[i] > MAX_WORLD_WIDTH) {
			Com_Printf("WARNING: node with unbounded volume %i\n", (int)node->mins[i]);
			break;
		}
	}
	if (node->planenum == PLANENUM_LEAF)
		return;

	MakeNodePortal(node);
	SplitNodePortals(node);

	MakeTreePortals_r(node->children[0]);
	MakeTreePortals_r(node->children[1]);
}
示例#6
0
//===========================================================================
//
// Parameter:				-
// Returns:					-
// Changes Globals:		-
//===========================================================================
void MakeTreePortals( tree_t *tree ) {

#ifdef ME
	Log_Print( "---- Node Portalization ----\n" );
	c_numportalizednodes = 0;
	c_portalmemory = 0;
	qprintf( "%6d nodes portalized", c_numportalizednodes );
#endif //ME

	MakeHeadnodePortals( tree );
	MakeTreePortals_r( tree->headnode );

#ifdef ME
	qprintf( "\n" );
	Log_Write( "\r%6d nodes portalized\r\n", c_numportalizednodes );
	Log_Print( "%6d tiny portals\r\n", c_tinyportals );
	Log_Print( "%6d KB of portal memory\r\n", c_portalmemory >> 10 );
	Log_Print( "%6i KB of winding memory\r\n", WindingMemory() >> 10 );
#endif //ME
} //end of the function MakeTreePortals
示例#7
0
/*
==================
MakeTreePortals
==================
*/
void MakeTreePortals (tree_t *tree)
{
	MakeHeadnodePortals (tree);
	MakeTreePortals_r (tree->headnode);
}
/*
==================
MakeTreePortals
==================
*/
void MakeTreePortals( tree_t *tree ) {
	common->Printf( "----- MakeTreePortals -----\n" );
	MakeHeadnodePortals( tree );
	MakeTreePortals_r( tree->headnode );
}