Esempio n. 1
0
void CM_FloodArea_r(int areaNum, int floodnum)
{
	int     i;
	cArea_t *area = &cm.areas[areaNum];
	int     *con;

	if (area->floodvalid == cm.floodvalid)
	{
		if (area->floodnum == floodnum)
		{
			return;
		}

		Com_Error(ERR_DROP, "CM_FloodArea_r: reflooded");
	}

	area->floodnum   = floodnum;
	area->floodvalid = cm.floodvalid;
	con              = cm.areaPortals + areaNum * cm.numAreas;
	for (i = 0 ; i < cm.numAreas  ; i++)
	{
		if (con[i] > 0)
		{
			CM_FloodArea_r(i, floodnum);
		}
	}
}
Esempio n. 2
0
/*
* CM_FloodAreaConnections
*/
void CM_FloodAreaConnections( cmodel_state_t *cms )
{
	int i;
	int floodnum;

	// all current floods are now invalid
	cms->floodvalid++;
	floodnum = 0;
	for( i = 0; i < cms->numareas; i++ )
	{
		if( cms->map_areas[i].floodvalid == cms->floodvalid )
			continue; // already flooded into
		floodnum++;
		CM_FloodArea_r( cms, i, floodnum );
	}
}
Esempio n. 3
0
/*
=======================================================================================================================================
CM_FloodAreaConnections
=======================================================================================================================================
*/
void CM_FloodAreaConnections(void) {
	int i;
	cArea_t *area = cm.areas; // optimization
	int floodnum = 0;

	// all current floods are now invalid
	cm.floodvalid++;

	for (i = 0; i < cm.numAreas; i++, area++) {
		if (area->floodvalid == cm.floodvalid) {
			continue; // already flooded into
		}

		floodnum++;

		CM_FloodArea_r(i, floodnum);
	}
}
Esempio n. 4
0
/*
* CM_FloodArea_r
*/
static void CM_FloodArea_r( cmodel_state_t *cms, int areanum, int floodnum )
{
	int i;
	carea_t	*area;
	int *p;

	area = &cms->map_areas[areanum];
	if( area->floodvalid == cms->floodvalid )
	{
		if( area->floodnum == floodnum )
			return;
		Com_Error( ERR_DROP, "FloodArea_r: reflooded" );
	}

	area->floodnum = floodnum;
	area->floodvalid = cms->floodvalid;
	p = cms->map_areaportals + areanum * cms->numareas;
	for( i = 0; i < cms->numareas; i++ )
	{
		if( p[i] > 0 )
			CM_FloodArea_r( cms, i, floodnum );
	}
}