try to fix FindFloatPlane bug
unlimit entity count git-svn-id: svn://svn.icculus.org/netradiant/trunk@382 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
parent
ba342c2f4a
commit
b5bff46ac3
|
|
@ -649,6 +649,13 @@ void UnparseEntities( void )
|
||||||
/* run through entity list */
|
/* run through entity list */
|
||||||
for( i = 0; i < numBSPEntities && i < numEntities; i++ )
|
for( i = 0; i < numBSPEntities && i < numEntities; i++ )
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
int sz = end - buf;
|
||||||
|
AUTOEXPAND_BY_REALLOC(bspEntData, sz + 65536, allocatedBSPEntData, 1024);
|
||||||
|
buf = bspEntData;
|
||||||
|
end = buf + sz;
|
||||||
|
}
|
||||||
|
|
||||||
/* get epair */
|
/* get epair */
|
||||||
ep = entities[ i ].epairs;
|
ep = entities[ i ].epairs;
|
||||||
if( ep == NULL )
|
if( ep == NULL )
|
||||||
|
|
@ -685,7 +692,7 @@ void UnparseEntities( void )
|
||||||
end += 2;
|
end += 2;
|
||||||
|
|
||||||
/* check for overflow */
|
/* check for overflow */
|
||||||
if( end > buf + MAX_MAP_ENTSTRING )
|
if( end > buf + allocatedBSPEntData )
|
||||||
Error( "Entity text too long" );
|
Error( "Entity text too long" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -509,7 +509,7 @@ void LoadIBSPFile( const char *filename )
|
||||||
bspLightBytes = safe_malloc( numBSPLightBytes );
|
bspLightBytes = safe_malloc( numBSPLightBytes );
|
||||||
CopyLump( (bspHeader_t*) header, LUMP_LIGHTMAPS, bspLightBytes, 1 );
|
CopyLump( (bspHeader_t*) header, LUMP_LIGHTMAPS, bspLightBytes, 1 );
|
||||||
|
|
||||||
bspEntDataSize = CopyLump( (bspHeader_t*) header, LUMP_ENTITIES, bspEntData, 1);
|
bspEntDataSize = CopyLump_Allocate( (bspHeader_t*) header, LUMP_ENTITIES, (void **) &bspEntData, 1, &allocatedBSPEntData);
|
||||||
|
|
||||||
CopyLightGridLumps( header );
|
CopyLightGridLumps( header );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -265,7 +265,7 @@ void LoadRBSPFile( const char *filename )
|
||||||
bspLightBytes = safe_malloc( numBSPLightBytes );
|
bspLightBytes = safe_malloc( numBSPLightBytes );
|
||||||
CopyLump( (bspHeader_t*) header, LUMP_LIGHTMAPS, bspLightBytes, 1 );
|
CopyLump( (bspHeader_t*) header, LUMP_LIGHTMAPS, bspLightBytes, 1 );
|
||||||
|
|
||||||
bspEntDataSize = CopyLump( (bspHeader_t*) header, LUMP_ENTITIES, bspEntData, 1);
|
bspEntDataSize = CopyLump_Allocate( (bspHeader_t*) header, LUMP_ENTITIES, (void **) &bspEntData, 1, &allocatedBSPEntData);
|
||||||
|
|
||||||
CopyLightGridLumps( header );
|
CopyLightGridLumps( header );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ ydnar: changed to allow a number of test points to be supplied that
|
||||||
must be within an epsilon distance of the plane
|
must be within an epsilon distance of the plane
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int FindFloatPlane( vec3_t normal, vec_t dist, int numPoints, vec3_t *points ) // NOTE: this has a side effect on the normal. Good or bad?
|
int FindFloatPlane( vec3_t innormal, vec_t dist, int numPoints, vec3_t *points ) // NOTE: this has a side effect on the normal. Good or bad?
|
||||||
|
|
||||||
#ifdef USE_HASHING
|
#ifdef USE_HASHING
|
||||||
|
|
||||||
|
|
@ -222,12 +222,14 @@ int FindFloatPlane( vec3_t normal, vec_t dist, int numPoints, vec3_t *points ) /
|
||||||
plane_t *p;
|
plane_t *p;
|
||||||
vec_t d;
|
vec_t d;
|
||||||
vec3_t centerofweight;
|
vec3_t centerofweight;
|
||||||
|
vec3_t normal;
|
||||||
|
|
||||||
VectorClear(centerofweight);
|
VectorClear(centerofweight);
|
||||||
for(i = 0; i < numPoints; ++i)
|
for(i = 0; i < numPoints; ++i)
|
||||||
VectorMA(centerofweight, 1.0 / numPoints, points[i], centerofweight);
|
VectorMA(centerofweight, 1.0 / numPoints, points[i], centerofweight);
|
||||||
|
|
||||||
/* hash the plane */
|
/* hash the plane */
|
||||||
|
VectorCopy(innormal, normal);
|
||||||
SnapPlane( normal, &dist, centerofweight );
|
SnapPlane( normal, &dist, centerofweight );
|
||||||
hash = (PLANE_HASHES - 1) & (int) fabs( dist );
|
hash = (PLANE_HASHES - 1) & (int) fabs( dist );
|
||||||
|
|
||||||
|
|
@ -269,6 +271,7 @@ int FindFloatPlane( vec3_t normal, vec_t dist, int numPoints, vec3_t *points ) /
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
plane_t *p;
|
plane_t *p;
|
||||||
|
vec3_t normal;
|
||||||
|
|
||||||
|
|
||||||
vec3_t centerofweight;
|
vec3_t centerofweight;
|
||||||
|
|
@ -277,6 +280,7 @@ int FindFloatPlane( vec3_t normal, vec_t dist, int numPoints, vec3_t *points ) /
|
||||||
for(i = 0; i < numPoints; ++i)
|
for(i = 0; i < numPoints; ++i)
|
||||||
VectorMA(centerofweight, 1.0 / numPoints, points[i], centerofweight);
|
VectorMA(centerofweight, 1.0 / numPoints, points[i], centerofweight);
|
||||||
|
|
||||||
|
VectorCopy(innormal, normal);
|
||||||
SnapPlane( normal, &dist, centerofweight );
|
SnapPlane( normal, &dist, centerofweight );
|
||||||
for( i = 0, p = mapplanes; i < nummapplanes; i++, p++ )
|
for( i = 0, p = mapplanes; i < nummapplanes; i++, p++ )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2385,7 +2385,8 @@ Q_EXTERN int allocatedBSPShaders Q_ASSIGN( 0 );
|
||||||
Q_EXTERN bspShader_t* bspShaders Q_ASSIGN(0);
|
Q_EXTERN bspShader_t* bspShaders Q_ASSIGN(0);
|
||||||
|
|
||||||
Q_EXTERN int bspEntDataSize Q_ASSIGN( 0 );
|
Q_EXTERN int bspEntDataSize Q_ASSIGN( 0 );
|
||||||
Q_EXTERN char bspEntData[ MAX_MAP_ENTSTRING ];
|
Q_EXTERN int allocatedBSPEntData Q_ASSIGN( 0 );
|
||||||
|
Q_EXTERN char *bspEntData Q_ASSIGN(0);
|
||||||
|
|
||||||
Q_EXTERN int numBSPLeafs Q_ASSIGN( 0 );
|
Q_EXTERN int numBSPLeafs Q_ASSIGN( 0 );
|
||||||
Q_EXTERN bspLeaf_t bspLeafs[ MAX_MAP_LEAFS ];
|
Q_EXTERN bspLeaf_t bspLeafs[ MAX_MAP_LEAFS ];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user