vec3_t normal;
float dist;
int planenum;
-
+ float sizeBias;
+
+ //int frontC,backC,splitsC,facingC;
+
/* ydnar: set some defaults */
*splitPlaneNum = -1; /* leaf */
bestValue = -99999;
bestSplit = list;
+
for( split = list; split; split = split->next )
split->checked = qfalse;
back++;
}
}
- value = 5*facing - 5*splits; // - abs(front-back);
- if ( plane->type < 3 ) {
- value+=5; // axial is better
+
+ if(bspAlternateSplitWeights)
+ {
+ // from 27
+
+ //Bigger is better
+ sizeBias=WindingArea(split->w);
+
+ //Base score = 20000 perfectly balanced
+ value = 20000-(abs(front-back));
+ value -= plane->counter;// If we've already used this plane sometime in the past try not to use it again
+ value -= facing ; // if we're going to have alot of other surfs use this plane, we want to get it in quickly.
+ value -= splits*5; //more splits = bad
+ value += sizeBias*10; //We want a huge score bias based on plane size
}
- value += split->priority; // prioritize hints higher
+ else
+ {
+ value = 5*facing - 5*splits; // - abs(front-back);
+ if ( plane->type < 3 ) {
+ value+=5; // axial is better
+ }
+ }
+
+ value += split->priority; // prioritize hints higher
if ( value > bestValue ) {
bestValue = value;
bestSplit = split;
+ //frontC=front;
+ //backC=back;
+ //splitsC=splits;
+ //facingC=facing;
}
}
if( bestValue == -99999 )
return;
+ //Sys_FPrintf (SYS_VRB, "F: %d B:%d S:%d FA:%ds\n",frontC,backC,splitsC,facingC );
+
/* set best split data */
*splitPlaneNum = bestSplit->planenum;
*compileFlags = bestSplit->compileFlags;
+
+ if (*splitPlaneNum>-1) mapplanes[ *splitPlaneNum ].counter++;
}
}
Sys_FPrintf( SYS_VRB, "%9d faces\n", count );
+ for( i = 0; i < nummapplanes; i++)
+ {
+ mapplanes[ i ].counter=0;
+ }
+
tree->headnode = AllocNode();
VectorCopy( tree->mins, tree->headnode->mins );
VectorCopy( tree->maxs, tree->headnode->maxs );
{
dv->lightmap[ j ][ 0 ] = 0.0f;
dv->lightmap[ j ][ 1 ] = 0.0f;
- dv->color[ j ][ 0 ] = color[ 0 ];
- dv->color[ j ][ 1 ] = color[ 1 ];
- dv->color[ j ][ 2 ] = color[ 2 ];
- dv->color[ j ][ 3 ] = color[ 3 ];
+ if(spawnFlags & 32) // spawnflag 32: model color -> alpha hack
+ {
+ dv->color[ j ][ 0 ] = 255.0f;
+ dv->color[ j ][ 1 ] = 255.0f;
+ dv->color[ j ][ 2 ] = 255.0f;
+ dv->color[ j ][ 3 ] = color[ 0 ] * 0.3f + color[ 1 ] * 0.59f + color[ 2 ] * 0.11f;
+ }
+ else
+ {
+ dv->color[ j ][ 0 ] = color[ 0 ];
+ dv->color[ j ][ 1 ] = color[ 1 ];
+ dv->color[ j ][ 2 ] = color[ 2 ];
+ dv->color[ j ][ 3 ] = color[ 3 ];
+ }
}
}