* fixed warnings

* removed www dir (dead links, almost none of the posted links are available - correct me when i'm wrong, then we can revert this remove)


git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@275 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
mattn 2008-06-26 11:21:13 +00:00
parent ec65cc975d
commit c0f477bd04
17 changed files with 235 additions and 1827 deletions

View File

@ -143,13 +143,13 @@ int WINS_Init(void)
char buff[MAXHOSTNAMELEN];
struct sockaddr_s addr;
char *p;
int r;
/*
/*
linux doesn't have anything to initialize for the net
"Windows .. built for the internet .. the internet .. built with unix"
"Windows .. built for the internet .. the internet .. built with unix"
*/
#if 0
WORD wVersionRequested;
int r;
WORD wVersionRequested;
wVersionRequested = MAKEWORD(2, 2);
@ -432,7 +432,7 @@ static int PartialIPAddress (char *in, struct sockaddr_s *hostaddr)
int addr;
int num;
int mask;
buff[0] = '.';
b = buff;
strcpy(buff+1, in);
@ -449,11 +449,11 @@ static int PartialIPAddress (char *in, struct sockaddr_s *hostaddr)
mask<<=8;
addr = (addr<<8) + num;
}
hostaddr->sa_family = AF_INET;
((struct sockaddr_in *)hostaddr)->sin_port = htons((u_short)net_hostport);
((struct sockaddr_in *)hostaddr)->sin_addr.s_addr = (myAddr & htonl(mask)) | htonl(addr);
return 0;
} //end of the function PartialIPAddress
//===========================================================================
@ -594,7 +594,7 @@ int WINS_Broadcast (int socket, byte *buf, int len)
//===========================================================================
int WINS_Write(int socket, byte *buf, int len, struct sockaddr_s *addr)
{
int ret, written;
int ret = 0, written;
if (addr)
{
@ -725,7 +725,7 @@ int WINS_GetAddrFromName(char *name, struct sockaddr_s *addr)
if (name[0] >= '0' && name[0] <= '9')
return PartialIPAddress (name, addr);
hostentry = gethostbyname (name);
if (!hostentry)
return -1;

View File

@ -52,6 +52,7 @@ int ludcmp(float **a, int n, int *indx, float *d)
float big,dum,sum,temp;
float *vv;
imax = 0;
vv=(float*)malloc(sizeof(float)*n);
*d=1.0;
for (i=0;i<n;i++) {

View File

@ -48,7 +48,7 @@ void m4x4_translation_for_vec3(m4x4_t matrix, const vec3_t translation)
void m4x4_rotation_for_vec3(m4x4_t matrix, const vec3_t euler, eulerOrder_t order)
{
double cx, sx, cy, sy, cz, sz;
cx = cos(DEG2RAD(euler[0]));
sx = sin(DEG2RAD(euler[0]));
cy = cos(DEG2RAD(euler[1]));
@ -688,11 +688,11 @@ void m4x4_orthogonal_invert(m4x4_t matrix)
float m3_det( m3x3_t mat )
{
float det;
det = mat[0] * ( mat[4]*mat[8] - mat[7]*mat[5] )
- mat[1] * ( mat[3]*mat[8] - mat[6]*mat[5] )
+ mat[2] * ( mat[3]*mat[7] - mat[6]*mat[4] );
return( det );
}
@ -700,21 +700,21 @@ float m3_det( m3x3_t mat )
void m3_inverse( m3x3_t mr, m3x3_t ma )
{
float det = m3_det( ma );
if ( fabs( det ) < 0.0005 )
{
m3_identity( ma );
return;
}
mr[0] = ma[4]*ma[8] - ma[5]*ma[7] / det;
mr[1] = -( ma[1]*ma[8] - ma[7]*ma[2] ) / det;
mr[2] = ma[1]*ma[5] - ma[4]*ma[2] / det;
mr[3] = -( ma[3]*ma[8] - ma[5]*ma[6] ) / det;
mr[4] = ma[0]*ma[8] - ma[6]*ma[2] / det;
mr[5] = -( ma[0]*ma[5] - ma[3]*ma[2] ) / det;
mr[6] = ma[3]*ma[7] - ma[6]*ma[4] / det;
mr[7] = -( ma[0]*ma[7] - ma[6]*ma[1] ) / det;
mr[8] = ma[0]*ma[4] - ma[1]*ma[3] / det;
@ -724,7 +724,8 @@ void m3_inverse( m3x3_t mr, m3x3_t ma )
void m4_submat( m4x4_t mr, m3x3_t mb, int i, int j )
{
int ti, tj, idst, jdst;
idst = 0;
for ( ti = 0; ti < 4; ti++ )
{
if ( ti < i )
@ -732,7 +733,7 @@ void m4_submat( m4x4_t mr, m3x3_t mb, int i, int j )
else
if ( ti > i )
idst = ti-1;
for ( tj = 0; tj < 4; tj++ )
{
if ( tj < j )
@ -740,7 +741,7 @@ void m4_submat( m4x4_t mr, m3x3_t mb, int i, int j )
else
if ( tj > j )
jdst = tj-1;
if ( ti != i && tj != j )
mb[idst*3 + jdst] = mr[ti*4 + tj ];
}
@ -752,15 +753,15 @@ float m4_det( m4x4_t mr )
float det, result = 0, i = 1;
m3x3_t msub3;
int n;
for ( n = 0; n < 4; n++, i *= -1 )
{
m4_submat( mr, msub3, 0, n );
det = m3_det( msub3 );
result += mr[n] * det * i;
}
return result;
}
@ -770,21 +771,21 @@ int m4x4_invert(m4x4_t matrix)
m3x3_t mtemp;
int i, j, sign;
m4x4_t m4x4_temp;
if ( fabs( mdet ) < 0.0000000001 ) //% 0.0005
return 1;
memcpy(m4x4_temp, matrix, sizeof(m4x4_t));
for ( i = 0; i < 4; i++ )
for ( j = 0; j < 4; j++ )
{
sign = 1 - ( (i +j) % 2 ) * 2;
m4_submat( m4x4_temp, mtemp, i, j );
matrix[i+j*4] = ( m3_det( mtemp ) * sign ) / mdet;
}
return 0;
}

View File

@ -161,17 +161,17 @@ picoModel_t *PicoLoadModel( char *fileName, int frameNum )
int bufSize;
char *modelFileName, *remapFileName;
/* init */
model = NULL;
/* make sure we've got a file name */
if( fileName == NULL )
{
_pico_printf( PICO_ERROR, "PicoLoadModel: No filename given (fileName == NULL)" );
return NULL;
}
/* load file data (buffer is allocated by host app) */
_pico_load_file( fileName, &buffer, &bufSize );
if( bufSize < 0 )
@ -182,14 +182,14 @@ picoModel_t *PicoLoadModel( char *fileName, int frameNum )
/* get ptr to list of supported modules */
modules = PicoModuleList( NULL );
/* run it through the various loader functions and try */
/* to find a loader that fits the given file data */
for( ; *modules != NULL; modules++ )
{
/* get module */
pm = *modules;
/* sanity check */
if( pm == NULL)
break;
@ -197,7 +197,7 @@ picoModel_t *PicoLoadModel( char *fileName, int frameNum )
/* module must be able to load */
if( pm->canload == NULL || pm->load == NULL )
continue;
/* see whether this module can load the model file or not */
if( pm->canload( fileName, buffer, bufSize ) == PICO_PMV_OK )
{
@ -208,13 +208,13 @@ picoModel_t *PicoLoadModel( char *fileName, int frameNum )
_pico_free_file( buffer );
return NULL;
}
/* assign pointer to file format module */
model->module = pm;
/* get model file name */
modelFileName = PicoGetModelFileName( model );
/* apply model remappings from <model>.remap */
if( strlen( modelFileName ) )
{
@ -233,12 +233,12 @@ picoModel_t *PicoLoadModel( char *fileName, int frameNum )
_pico_free( remapFileName );
}
}
/* model was loaded, so break out of loop */
break;
}
}
/* free memory used by file buffer */
if( buffer)
_pico_free_file( buffer );
@ -261,7 +261,7 @@ creates a new pico model
picoModel_t *PicoNewModel( void )
{
picoModel_t *model;
/* allocate */
model = _pico_alloc( sizeof(picoModel_t) );
if( model == NULL )
@ -269,7 +269,7 @@ picoModel_t *PicoNewModel( void )
/* clear */
memset( model,0,sizeof(picoModel_t) );
/* model set up */
_pico_zero_bounds( model->mins,model->maxs );
@ -290,26 +290,26 @@ frees a model and all associated data
void PicoFreeModel( picoModel_t *model )
{
int i;
/* sanity check */
if( model == NULL )
return;
/* free bits */
if( model->name )
_pico_free( model->name );
/* free shaders */
for( i = 0; i < model->numShaders; i++ )
PicoFreeShader( model->shader[ i ] );
free( model->shader );
/* free surfaces */
for( i = 0; i < model->numSurfaces; i++ )
PicoFreeSurface( model->surface[ i ] );
free( model->surface );
/* free the model */
_pico_free( model );
}
@ -327,7 +327,7 @@ int PicoAdjustModel( picoModel_t *model, int numShaders, int numSurfaces )
/* dummy check */
if( model == NULL )
return 0;
/* bare minimums */
/* sea: null surface/shader fix (1s=>0s) */
if( numShaders < 0 )
@ -342,11 +342,11 @@ int PicoAdjustModel( picoModel_t *model, int numShaders, int numSurfaces )
if( !_pico_realloc( (void *) &model->shader, model->numShaders * sizeof( *model->shader ), model->maxShaders * sizeof( *model->shader ) ) )
return 0;
}
/* set shader count to higher */
if( numShaders > model->numShaders )
model->numShaders = numShaders;
/* additional surfaces? */
while( numSurfaces > model->maxSurfaces )
{
@ -354,11 +354,11 @@ int PicoAdjustModel( picoModel_t *model, int numShaders, int numSurfaces )
if( !_pico_realloc( (void *) &model->surface, model->numSurfaces * sizeof( *model->surface ), model->maxSurfaces * sizeof( *model->surface ) ) )
return 0;
}
/* set shader count to higher */
if( numSurfaces > model->numSurfaces )
model->numSurfaces = numSurfaces;
/* return ok */
return 1;
}
@ -377,14 +377,14 @@ creates a new pico shader and returns its index. -sea
picoShader_t *PicoNewShader( picoModel_t *model )
{
picoShader_t *shader;
/* allocate and clear */
shader = _pico_alloc( sizeof(picoShader_t) );
if( shader == NULL )
return NULL;
memset( shader, 0, sizeof(picoShader_t) );
/* attach it to the model */
if( model != NULL )
{
@ -423,13 +423,13 @@ void PicoFreeShader( picoShader_t *shader )
/* dummy check */
if( shader == NULL )
return;
/* free bits */
if( shader->name )
_pico_free( shader->name );
if( shader->mapName )
_pico_free( shader->mapName );
/* free the shader */
_pico_free( shader );
}
@ -444,12 +444,12 @@ finds a named shader in a model
picoShader_t *PicoFindShader( picoModel_t *model, char *name, int caseSensitive )
{
int i;
/* sanity checks */
if( model == NULL || name == NULL ) /* sea: null name fix */
return NULL;
/* walk list */
for( i = 0; i < model->numShaders; i++ )
{
@ -467,7 +467,7 @@ picoShader_t *PicoFindShader( picoModel_t *model, char *name, int caseSensitive
else if( !_pico_stricmp( name, model->shader[ i ]->name ) )
return model->shader[ i ];
}
/* named shader not found */
return NULL;
}
@ -487,13 +487,13 @@ picoSurface_t *PicoNewSurface( picoModel_t *model )
{
picoSurface_t *surface;
char surfaceName[64];
/* allocate and clear */
surface = _pico_alloc( sizeof( *surface ) );
if( surface == NULL )
return NULL;
memset( surface, 0, sizeof( *surface ) );
/* attach it to the model */
if( model != NULL )
{
@ -503,16 +503,16 @@ picoSurface_t *PicoNewSurface( picoModel_t *model )
_pico_free( surface );
return NULL;
}
/* attach */
model->surface[ model->numSurfaces - 1 ] = surface;
surface->model = model;
/* set default name */
sprintf( surfaceName, "Unnamed_%d", model->numSurfaces );
PicoSetSurfaceName( surface, surfaceName );
}
/* return */
return surface;
}
@ -526,18 +526,18 @@ frees a surface and all associated data
void PicoFreeSurface( picoSurface_t *surface )
{
int i;
/* dummy check */
if( surface == NULL )
return;
/* free bits */
_pico_free( surface->xyz );
_pico_free( surface->normal );
_pico_free( surface->index );
_pico_free( surface->faceNormal );
/* free arrays */
for( i = 0; i < surface->numSTArrays; i++ )
_pico_free( surface->st[ i ] );
@ -545,7 +545,7 @@ void PicoFreeSurface( picoSurface_t *surface )
for( i = 0; i < surface->numColorArrays; i++ )
_pico_free( surface->color[ i ] );
free( surface->color );
/* free the surface */
_pico_free( surface );
}
@ -561,12 +561,12 @@ will always grow, never shrink
int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays, int numColorArrays, int numIndexes, int numFaceNormals )
{
int i;
/* dummy check */
if( surface == NULL )
return 0;
/* bare minimums */
if( numVertexes < 1 )
numVertexes = 1;
@ -576,7 +576,7 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays,
numColorArrays = 1;
if( numIndexes < 1 )
numIndexes = 1;
/* additional vertexes? */
while( numVertexes > surface->maxVertexes ) /* fix */
{
@ -592,11 +592,11 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays,
if( !_pico_realloc( (void*) &surface->color[ i ], surface->numVertexes * sizeof( *surface->color[ i ] ), surface->maxVertexes * sizeof( *surface->color[ i ] ) ) )
return 0;
}
/* set vertex count to higher */
if( numVertexes > surface->numVertexes )
surface->numVertexes = numVertexes;
/* additional st arrays? */
while( numSTArrays > surface->maxSTArrays ) /* fix */
{
@ -610,7 +610,7 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays,
surface->numSTArrays++;
}
}
/* additional color arrays? */
while( numColorArrays > surface->maxColorArrays ) /* fix */
{
@ -624,7 +624,7 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays,
surface->numColorArrays++;
}
}
/* additional indexes? */
while( numIndexes > surface->maxIndexes ) /* fix */
{
@ -632,7 +632,7 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays,
if( !_pico_realloc( (void*) &surface->index, surface->numIndexes * sizeof( *surface->index ), surface->maxIndexes * sizeof( *surface->index ) ) )
return 0;
}
/* set index count to higher */
if( numIndexes > surface->numIndexes )
surface->numIndexes = numIndexes;
@ -665,7 +665,7 @@ picoSurface_t *PicoFindSurface(
/* sanity check */
if( model == NULL || name == NULL )
return NULL;
/* walk list */
for( i = 0; i < model->numSurfaces; i++ )
{
@ -1035,7 +1035,7 @@ picoShader_t *PicoGetModelShader( picoModel_t *model, int num )
return NULL;
if( num < 0 || num >= model->numShaders )
return NULL;
/* return the shader */
return model->shader[ num ];
}
@ -1060,7 +1060,7 @@ picoSurface_t *PicoGetModelSurface( picoModel_t *model, int num )
return NULL;
if( num < 0 || num >= model->numSurfaces )
return NULL;
/* return the surface */
return model->surface[ num ];
}
@ -1070,17 +1070,17 @@ picoSurface_t *PicoGetModelSurface( picoModel_t *model, int num )
int PicoGetModelTotalVertexes( picoModel_t *model )
{
int i, count;
if( model == NULL )
return 0;
if( model->surface == NULL )
return 0;
count = 0;
for( i = 0; i < model->numSurfaces; i++ )
count += PicoGetSurfaceNumVertexes( model->surface[ i ] );
return count;
}
@ -1089,17 +1089,17 @@ int PicoGetModelTotalVertexes( picoModel_t *model )
int PicoGetModelTotalIndexes( picoModel_t *model )
{
int i, count;
if( model == NULL )
return 0;
if( model->surface == NULL )
return 0;
count = 0;
for( i = 0; i < model->numSurfaces; i++ )
count += PicoGetSurfaceNumIndexes( model->surface[ i ] );
return count;
}
@ -1413,7 +1413,7 @@ picoVertexCombinationHash_t *PicoFindVertexCombinationInHashTable( picoVertexCom
/* check normal */
if( (vertexCombinationHash->vcd.normal[ 0 ] != normal[ 0 ] || vertexCombinationHash->vcd.normal[ 1 ] != normal[ 1 ] || vertexCombinationHash->vcd.normal[ 2 ] != normal[ 2 ]) )
continue;
/* check st */
if( vertexCombinationHash->vcd.st[ 0 ] != st[ 0 ] || vertexCombinationHash->vcd.st[ 1 ] != st[ 1 ] )
continue;
@ -1429,7 +1429,7 @@ picoVertexCombinationHash_t *PicoFindVertexCombinationInHashTable( picoVertexCom
( fabs(normal[ 1 ] - vertexCombinationHash->vcd.normal[ 1 ]) ) > HASH_NORMAL_EPSILON ||
( fabs(normal[ 2 ] - vertexCombinationHash->vcd.normal[ 2 ]) ) > HASH_NORMAL_EPSILON )
continue;
/* check st */
if( ( fabs(st[ 0 ] - vertexCombinationHash->vcd.st[ 0 ]) ) > HASH_ST_EPSILON ||
( fabs(st[ 1 ] - vertexCombinationHash->vcd.st[ 1 ]) ) > HASH_ST_EPSILON )
@ -1488,23 +1488,23 @@ fixme: needs non-naive algorithm
int PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t normal, int numSTs, picoVec2_t *st, int numColors, picoColor_t *color )
{
int i, j;
/* dummy check */
if( surface == NULL || surface->numVertexes <= 0 )
return -1;
/* walk vertex list */
for( i = 0; i < surface->numVertexes; i++ )
{
/* check xyz */
if( xyz != NULL && (surface->xyz[ i ][ 0 ] != xyz[ 0 ] || surface->xyz[ i ][ 1 ] != xyz[ 1 ] || surface->xyz[ i ][ 2 ] != xyz[ 2 ]) )
continue;
/* check normal */
if( normal != NULL && (surface->normal[ i ][ 0 ] != normal[ 0 ] || surface->normal[ i ][ 1 ] != normal[ 1 ] || surface->normal[ i ][ 2 ] != normal[ 2 ]) )
continue;
/* check st */
if( numSTs > 0 && st != NULL )
{
@ -1516,7 +1516,7 @@ int PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t
if( j != numSTs )
continue;
}
/* check color */
if( numColors > 0 && color != NULL )
{
@ -1528,11 +1528,11 @@ int PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t
if( j != numColors )
continue;
}
/* vertex matches */
return i;
}
/* nada */
return -1;
}
@ -1554,16 +1554,16 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
picoVec3_t votes[ MAX_NORMAL_VOTES ];
picoVec3_t *normals, diff;
picoVec4_t plane;
/* dummy check */
if( surface == NULL || surface->numVertexes == 0 )
return;
/* fixme: handle other surface types */
if( surface->type != PICO_TRIANGLES )
return;
/* allocate normal storage */
normals = _pico_alloc( surface->numVertexes * sizeof( *normals ) );
if( normals == NULL )
@ -1571,16 +1571,16 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
_pico_printf( PICO_ERROR, "PicoFixSurfaceNormals: Unable to allocate memory for temporary normal storage" );
return;
}
/* zero it out */
memset( normals, 0, surface->numVertexes * sizeof( *normals ) );
/* walk vertex list */
for( i = 0; i < surface->numVertexes; i++ )
{
/* zero out votes */
numVotes = 0;
/* find all the triangles that reference this vertex */
for( j = 0, faceIndex = 0; j < surface->numIndexes; j += 3, faceIndex++ )
{
@ -1588,17 +1588,17 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
a = surface->index[ j ];
b = surface->index[ j + 1 ];
c = surface->index[ j + 2 ];
/* ignore degenerate triangles */
if( a == b || b == c || c == a )
continue;
/* ignore indexes out of range */
if( a < 0 || a >= surface->numVertexes ||
b < 0 || b >= surface->numVertexes ||
c < 0 || c >= surface->numVertexes )
continue;
/* test triangle */
if( a == i || b == i || c == i )
{
@ -1630,7 +1630,7 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
fabs( diff[ 2 ] ) < EQUAL_NORMAL_EPSILON )
break;
}
/* add a new vote? */
if( k == numVotes && numVotes < MAX_NORMAL_VOTES )
{
@ -1639,7 +1639,7 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
}
}
}
/* tally votes */
if( numVotes > 0 )
{
@ -1647,7 +1647,7 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
_pico_zero_vec( normals[ i ] );
for( k = 0; k < numVotes; k++ )
_pico_add_vec( normals[ i ], votes[ k ], normals[ i ] );
/* normalize it */
if( _pico_normalize_vec( normals[ i ] ) )
{
@ -1662,7 +1662,7 @@ void PicoFixSurfaceNormals( picoSurface_t *surface )
}
}
}
/* free normal storage */
_pico_free( normals );
}
@ -1689,21 +1689,21 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
picoParser_t *p;
picoByte_t *remapBuffer;
int remapBufSize;
/* sanity checks */
if( model == NULL || remapFile == NULL )
return 0;
/* load remap file contents */
_pico_load_file( remapFile,&remapBuffer,&remapBufSize );
/* check result */
if( remapBufSize == 0 )
return 1; /* file is empty: no error */
if( remapBufSize < 0 )
return 0; /* load failed: error */
/* create a new pico parser */
p = _pico_new_parser( remapBuffer, remapBufSize );
if (p == NULL)
@ -1711,7 +1711,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
/* ram is really cheap nowadays... */
_prm_error_return;
}
/* doo teh parse */
while( 1 )
{
@ -1725,7 +1725,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
_pico_parse_skip_rest( p );
continue;
}
/* block for quick material shader name remapping */
/* materials { "m" (=>|->|=) "s" } */
if( !_pico_stricmp(p->token, "materials" ) )
@ -1741,8 +1741,8 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
{
picoShader_t *shader;
char *materialName;
/* get material name */
if (_pico_parse( p,1 ) == NULL) break;
if (!strlen(p->token)) continue;
@ -1807,7 +1807,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
/* check square closing bracket */
if (!_pico_parse_check( p,0,"]" ))
_prm_error_return;
_prm_error_return;
/* try to find material by name */
shader = PicoFindShader( model,tempMaterialName,0 );
@ -1864,6 +1864,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
color[ 0 ] = (picoByte_t)v[ 0 ];
color[ 1 ] = (picoByte_t)v[ 1 ];
color[ 2 ] = (picoByte_t)v[ 2 ];
color[ 3 ] = 1;
/* set new ambient color */
PicoSetShaderAmbientColor( shader,color );
@ -1881,6 +1882,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
color[ 0 ] = (picoByte_t)v[ 0 ];
color[ 1 ] = (picoByte_t)v[ 1 ];
color[ 2 ] = (picoByte_t)v[ 2 ];
color[ 3 ] = 1;
/* set new ambient color */
PicoSetShaderDiffuseColor( shader,color );
@ -1898,6 +1900,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
color[ 0 ] = (picoByte_t)v[ 0 ];
color[ 1 ] = (picoByte_t)v[ 1 ];
color[ 2 ] = (picoByte_t)v[ 2 ];
color[ 3 ] = 1;
/* set new ambient color */
PicoSetShaderSpecularColor( shader,color );
@ -1908,7 +1911,7 @@ int PicoRemapModel( picoModel_t *model, char *remapFile )
}
/* end 'materials[' */
}
/* free both parser and file buffer */
_pico_free_parser( p );
_pico_free_file( remapBuffer );
@ -1924,7 +1927,7 @@ A nice way to add individual triangles to the model.
Chooses an appropriate surface based on the shader, or adds a new surface if necessary
*/
void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals,
void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals,
int numSTs, picoVec2_t **st, int numColors, picoColor_t **colors,
picoShader_t* shader )
{
@ -1937,7 +1940,7 @@ void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t**
{
workSurface = model->surface[i];
if ( workSurface->shader == shader )
{
{
break;
}
}
@ -1960,7 +1963,7 @@ void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t**
}
/* add the triangle data to the surface */
for ( i = 0 ; i < 3 ; i++ )
for ( i = 0 ; i < 3 ; i++ )
{
/* get the next free spot in the index array */
int newVertIndex = PicoGetSurfaceNumIndexes ( workSurface );
@ -1970,13 +1973,13 @@ void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t**
/* the vertex wasn't found, so create a new vertex in the pool from the data we have */
if ( vertDataIndex == -1 )
{
{
/* find the next spot for a new vertex */
vertDataIndex = PicoGetSurfaceNumVertexes ( workSurface );
vertDataIndex = PicoGetSurfaceNumVertexes ( workSurface );
/* assign the data to it */
PicoSetSurfaceXYZ ( workSurface ,vertDataIndex , *xyz[i] );
PicoSetSurfaceNormal ( workSurface , vertDataIndex , *normals[i] );
PicoSetSurfaceNormal ( workSurface , vertDataIndex , *normals[i] );
/* make sure to copy over all available ST's and colors for the vertex */
for ( j = 0 ; j < numColors ; j++ )
@ -1989,7 +1992,7 @@ void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t**
}
}
/* add this vertex to the triangle */
/* add this vertex to the triangle */
PicoSetSurfaceIndex ( workSurface , newVertIndex , vertDataIndex );
}
}
}

View File

@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define PM_ASE_C
/* uncomment when debugging this module */
//#define DEBUG_PM_ASE
//#define DEBUG_PM_ASE
//#define DEBUG_PM_ASE_EX
@ -61,14 +61,14 @@ typedef struct aseSubMaterial_s
struct aseSubMaterial_s* next;
int subMtlId;
picoShader_t* shader;
} aseSubMaterial_t;
typedef struct aseMaterial_s
{
struct aseMaterial_s* next;
struct aseSubMaterial_s* subMtls;
int mtlId;
int mtlId;
} aseMaterial_t;
/* Material/SubMaterial management functions */
@ -198,9 +198,6 @@ typedef struct aseFace_s
/* ASE Face management functions */
void _ase_add_face( aseFace_t **list, aseFace_t **tail, aseFace_t *newFace )
{
aseFace_t* face = *list;
aseFace_t* tempFace = NULL;
/* insert as head of list */
if ( !(*list) )
{
@ -209,11 +206,11 @@ void _ase_add_face( aseFace_t **list, aseFace_t **tail, aseFace_t *newFace )
else
{
(*tail)->next = newFace;
}
}
*tail = newFace;
newFace->next = NULL;
//tag the color indices so we can detect them and apply the default color to them
newFace->index[6] = -1;
newFace->index[7] = -1;
@ -258,36 +255,36 @@ static void _ase_free_faces (aseFace_t** list, aseFace_t** tail )
static int _ase_canload( PM_PARAMS_CANLOAD )
{
picoParser_t *p;
/* quick data length validation */
if( bufSize < 80 )
return PICO_PMV_ERROR_SIZE;
/* keep the friggin compiler happy */
*fileName = *fileName;
/* create pico parser */
p = _pico_new_parser( (picoByte_t*) buffer, bufSize );
if( p == NULL )
return PICO_PMV_ERROR_MEMORY;
/* get first token */
if( _pico_parse_first( p ) == NULL)
{
return PICO_PMV_ERROR_IDENT;
}
/* check first token */
if( _pico_stricmp( p->token, "*3dsmax_asciiexport" ) )
{
_pico_free_parser( p );
return PICO_PMV_ERROR_IDENT;
}
/* free the pico parser object */
_pico_free_parser( p );
/* file seems to be a valid ase file */
return PICO_PMV_OK;
}
@ -329,14 +326,14 @@ static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model
return;
}
}
/* we pull the data from the surface using the facelist data */
for ( i = 0 ; i < 3 ; i ++ )
{
xyz[i] = (picoVec3_t*) PicoGetSurfaceXYZ ( surface, face->index[ i ] );
normal[i] = (picoVec3_t*) PicoGetSurfaceNormal( surface, face->index[ i ] );
normal[i] = (picoVec3_t*) PicoGetSurfaceNormal( surface, face->index[ i ] );
st[i] = (picoVec2_t*) PicoGetSurfaceST ( surface, 0, face->index[ i + 3 ] );
if ( face->index [ i + 6] >= 0 )
{
color[i] = (picoColor_t*)PicoGetSurfaceColor ( surface, 0, face->index[ i + 6 ] );
@ -345,15 +342,15 @@ static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model
{
color[i] = &white;
}
}
/* submit the triangle to the model */
PicoAddTriangleToModel ( model , xyz , normal , 1 , st , 1 , color , subMtl->shader );
/* advance to the next face */
face = face->next;
}
face = face->next;
}
}
/* _ase_load:
@ -438,7 +435,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
//_ase_make_surface( model, &surface );
_ase_submit_triangles (surface, model ,materials,faces);
_ase_free_faces (&faces,&facesTail);
/* allocate new pico surface */
surface = PicoNewSurface( NULL );
if (surface == NULL)
@ -544,7 +541,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
PicoSetSurfaceIndex( surface, (index * 9 + 0), indexes[2] );
PicoSetSurfaceIndex( surface, (index * 9 + 1), indexes[1] );
PicoSetSurfaceIndex( surface, (index * 9 + 2), indexes[0] );
/* parse to the subMaterial ID */
while ( 1 )
{
@ -553,12 +550,12 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
{
aseFace_t* newFace;
int subMtlId;
_pico_parse_int ( p , &subMtlId );
newFace = _pico_calloc ( 1 , sizeof ( aseFace_t ));
/* we fix up the mtlId later when we parse the material_ref */
newFace->mtlId = 0;
newFace->mtlId = 0;
newFace->subMtlId = subMtlId;
newFace->index[0] = indexes[2];
newFace->index[1] = indexes[1];
@ -568,7 +565,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
break;
}
}
}
/* model texture vertex */
else if (!_pico_stricmp(p->token,"*mesh_tvert"))
@ -591,10 +588,10 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
/* get uv vertex t */
if (!_pico_parse_float( p,&uv[1] ))
_ase_error_return("UV vertex parse error");
/* ydnar: invert t */
uv[ 1 ] = 1.0f - uv[ 1 ];
/* set texture vertex */
PicoSetSurfaceST( surface,0,index,uv );
}
@ -604,27 +601,27 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
picoIndex_t indexes[3];
int index;
aseFace_t* face;
/* we must have a valid surface */
if( surface == NULL )
continue;
/* get face index */
if (!_pico_parse_int( p,&index ))
_ase_error_return("Texture face parse error");
/* get 1st vertex index */
if (!_pico_parse_int( p,&indexes[0] ))
_ase_error_return("Texture face parse error");
/* get 2nd vertex index */
if (!_pico_parse_int( p,&indexes[1] ))
_ase_error_return("Texture face parse error");
/* get 3rd vertex index */
if (!_pico_parse_int( p,&indexes[2] ))
_ase_error_return("Texture face parse error");
/* set face indexes (note interleaved offset!) */
PicoSetSurfaceIndex( surface, (index * 9 + 3), indexes[2] );
PicoSetSurfaceIndex( surface, (index * 9 + 4), indexes[1] );
@ -664,7 +661,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
if (!_pico_parse_float( p,&colorInput ))
_ase_error_return("color vertex parse error");
color[2] = (picoByte_t)(colorInput * 255);
/* leave alpha alone since we don't get any data from the ASE format */
color[3] = 255;
@ -722,15 +719,15 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
picoColor_t ambientColor, diffuseColor, specularColor;
char *mapname = NULL;
int subMtlId, subMaterialLevel = -1;
/* get material index */
_pico_parse_int( p,&index );
/* check brace */
if (!_pico_parse_check(p,1,"{"))
_ase_error_return("Material missing opening brace");
/* parse material block */
while( 1 )
{
@ -775,7 +772,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
/* parse submaterial index */
if (!_pico_stricmp(p->token,"*submaterial"))
{
{
/* allocate new pico shader */
_pico_parse_int( p , &subMtlId );
@ -784,7 +781,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
{
PicoFreeModel( model );
return NULL;
}
}
subMaterialLevel = level;
}
/* parse material name */
@ -793,7 +790,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
char* name = _pico_parse(p,0);
if ( name == NULL)
_ase_error_return("Missing material name");
strcpy ( materialName , name );
/* skip rest and continue with next token */
_pico_parse_skip_rest( p );
@ -895,12 +892,12 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
/* get next token */
if (_pico_parse(p,1) == NULL) break;
if (!strlen(p->token)) continue;
/* handle levels */
if (p->token[0] == '{') sublevel++;
if (p->token[0] == '}') sublevel--;
if (!sublevel) break;
/* parse diffuse map bitmap */
if (!_pico_stricmp(p->token,"*bitmap"))
{
@ -956,7 +953,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
/* this is just a material with 1 submaterial */
subMaterial = _ase_add_submaterial( &materials, index, 0, shader );
}
/* ydnar: free mapname */
if( mapname != NULL )
_pico_free( mapname );
@ -965,7 +962,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
/* skip unparsed rest of line and continue */
_pico_parse_skip_rest( p );
}
/* ydnar: finish existing surface */
// _ase_make_surface( model, &surface );
_ase_submit_triangles (surface, model ,materials,faces);

View File

@ -215,9 +215,10 @@ static void FreeObjVertexData( TObjVertexData *vertexData )
}
}
#if 0
static int _obj_mtl_load( picoModel_t *model )
{
picoShader_t *curShader = NULL;
//picoShader_t *curShader = NULL;
picoParser_t *p;
picoByte_t *mtlBuffer;
int mtlBufSize;
@ -258,7 +259,7 @@ static int _obj_mtl_load( picoModel_t *model )
p = _pico_new_parser( mtlBuffer, mtlBufSize );
if (p == NULL)
_obj_mtl_error_return;
/* doo teh .mtl parse */
while( 1 )
{
@ -477,6 +478,7 @@ static int _obj_mtl_load( picoModel_t *model )
/* return with success */
return 1;
}
#endif
/* _obj_load:
* loads a wavefront obj model file.

View File

@ -2,30 +2,30 @@
Copyright (c) 2001, Loki software, inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list
Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither the name of Loki software nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.
Neither the name of Loki software nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//
@ -256,7 +256,7 @@ static GSList* vfsGetListInternal (const char *dir, const char *ext, bool direct
files = g_slist_append (files, g_strdup (ptr));
}
}
for (i = 0; i < g_numDirs; i++)
{
strcpy (dirname, g_strDirs[i]);
@ -382,7 +382,6 @@ void vfsInitDirectory (const char *path)
char filename[PATH_MAX];
//struct dirent *direntry;
GDir *dir;
//GSList *dirlistptr;
GSList *dirlist = NULL;
if (g_numDirs == (VFS_MAXDIRS-1))
@ -620,9 +619,9 @@ void vfsCleanFileName(char *in)
const char* vfsBasePromptPath()
{
#ifdef _WIN32
static char* path = "C:";
static const char* path = "C:";
#else
static char* path = "/";
static const char* path = "/";
#endif
return path;
}
@ -730,7 +729,7 @@ char* vfsGetFullPath(const char *in, int index, int flag)
char *ptr,*lastptr;
lastptr = file->name;
while (ptr = strchr(lastptr,'/'))
while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)

View File

@ -2,30 +2,30 @@
Copyright (c) 2001, Loki software, inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list
Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
Neither the name of Loki software nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.
Neither the name of Loki software nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT,INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//
@ -336,7 +336,7 @@ static int vfsPakSort (const void *a, const void *b)
{
c2 = '/';
}
// Arnout: note - sort pakfiles in reverse order. This ensures that
// later pakfiles override earlier ones. This because the vfs module
// returns a filehandle to the first file it can find (while it should
@ -353,7 +353,7 @@ static int vfsPakSort (const void *a, const void *b)
return -1;
}
} while (c1);
return 0; // strings are equal
}
@ -370,7 +370,7 @@ void vfsInitDirectory (const char *path)
{
char filename[PATH_MAX];
GDir *dir;
GSList *dirlistptr, *dirlist = NULL;
GSList *dirlist = NULL;
int iGameMode; // 0: no filtering 1: SP 2: MP
if (g_numDirs == (VFS_MAXDIRS-1))
@ -386,7 +386,7 @@ void vfsInitDirectory (const char *path)
else if (strcmp (gamemode, "mp") == 0)
iGameMode = 2;
else
iGameMode = 0;
iGameMode = 0;
} else
iGameMode = 0;
@ -540,7 +540,7 @@ int vfsGetFileCount (const char *filename, int flag)
for (lst = g_pakFiles; lst != NULL; lst = g_slist_next (lst))
{
VFS_PAKFILE* file = (VFS_PAKFILE*)lst->data;
if (strcmp (file->name, fixed) == 0)
count++;
}
@ -633,7 +633,7 @@ int vfsLoadFile (const char *filename, void **bufferptr, int index)
((char*) (*bufferptr))[file->size] = 0;
i = unzReadCurrentFile (file->zipfile , *bufferptr, file->size);
unzCloseCurrentFile (file->zipfile);
unzCloseCurrentFile (file->zipfile);
if (i > 0)
return file->size;
else
@ -670,7 +670,7 @@ char* vfsExtractRelativePath_short(const char *in, bool shorten)
Sys_Printf("vfsExtractRelativePath: %s\n", in);
#endif
#ifdef _WIN32
#ifdef _WIN32
if (shorten)
{
// make it short
@ -690,7 +690,7 @@ char* vfsExtractRelativePath_short(const char *in, bool shorten)
#else
strcpy(l_in, in);
vfsCleanFileName(l_in);
#endif // ifdef WIN32
#endif // ifdef WIN32
#ifdef DBG_RLTPATH
@ -804,7 +804,7 @@ char* vfsGetFullPath(const char *in, int index, int flag)
char *ptr,*lastptr;
lastptr = file->name;
while (ptr = strchr(lastptr,'/'))
while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)
@ -844,10 +844,10 @@ char* vfsGetFullPath(const char *in, int index, int flag)
// or .. add an API so that the base prompt can be set during VFS init
const char* vfsBasePromptPath()
{
#ifdef _WIN32
static char* path = "C:";
#ifdef _WIN32
static const char* path = "C:";
#else
static char* path = "/";
static const char* path = "/";
#endif
return path;
}

View File

@ -398,8 +398,6 @@ void vfsInitDirectory (const char *path)
// (for instance when modifying the project settings)
void vfsShutdown ()
{
wadFile_t *tmpptr;
while (g_wadFiles)
{
wadCleanup((wadFile_t *)g_wadFiles->data);
@ -710,7 +708,7 @@ char* vfsGetFullPath(const char *in, int index, int flag)
char *ptr,*lastptr;
lastptr = file->name;
while (ptr = strchr(lastptr,'/'))
while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)
@ -750,9 +748,9 @@ char* vfsGetFullPath(const char *in, int index, int flag)
const char* vfsBasePromptPath()
{
#ifdef _WIN32
static char* path = "C:";
static const char* path = "C:";
#else
static char* path = "/";
static const char* path = "/";
#endif
return path;
}

View File

@ -4614,7 +4614,7 @@ void MainFrame::OnPrefs()
bool bPluginToolbar = g_PrefsDlg.m_bPluginToolbar;
int nShader = g_PrefsDlg.m_nShader;
int nTextureQuality = g_PrefsDlg.m_nTextureQuality;
int nLightRadiuses = g_PrefsDlg.m_nLightRadiuses;
// int nLightRadiuses = g_PrefsDlg.m_nLightRadiuses;
g_PrefsDlg.LoadPrefs();
if (g_PrefsDlg.DoModal() == IDOK)

View File

@ -1,271 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com | Bug Report Form</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr><td width="468" valign="BOTTOM">
<IFRAME WIDTH=468 HEIGHT=60 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000" SRC="http://ads.ugo.com/html.ng/cat2=pc&cat3=fps&cat4=blank&cat5=blank1&cat=games&site=telefragged&size=468x60"><A target="_top" href="http://UGO.eu-adcenter.net/event.ng/Type=click&ProfileID=14&RunID=1499&AdID=1063&TagValues=135.372.503.507.539.546.548&FamilyID=150&GroupID=34&Redirect=http:%2F%2Fwww.sony.com%2Fglasstron"><IMG src="http://UGO.eu-adcenter.net/ads/SonyGlastron/Gameface.gif" border=0 height=60 width=468 alt="SONY Glasstron - A Perfect Gift."></A></IFRAME></td><td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
<!-- ============================= -->
<!-- PAGE CONTENT - ONLY EDIT HERE -->
<!-- ============================= -->
<font color="#CCCCCC">
<br><br>
There are many versions of Radiant out there. It is very common that a company
would release the tools they used to make a game. That's how we have KPRadiant,
SoFRadiant, FAKKRadiant etc.<br><br>
We are mainly providing support and looking forward to hear bug reports about
the main version we are working on, <a href="http://www.qeradiant.com/gtkradiant.shtml"
target="_new">GtkRadiant</a>. We don't have the resources nor the possibility to
support other versions. (NOTE: if we can direct you somewhere else for help on a
particular editor we can put links here)<br><br>
Before you submit something, make sure you are on topic: the right editor
(<b>latest version</b>), and an editor related problem (a crash, misbehaviour, a
feature suggestion). We won't answer mapping questions like "how do I do a sky
shader" or "how does func_pendulum work". Try the <a
href="http://www.qeradiant.com/faq" target="_new">FAQ</a> to find links and
forums about mapping stuff.<br><br>
The leading cause of radiant crashes is video card drivers. It doesn't matter
how new the drivers are, they can still have bugs in them that will crash
Radiant. Most of the time this is due to lack of full featured drivers. Radiant
uses much more of the OpenGL set than quake & derivatives of.<br><br>
There is a bunch of resources you should read before reporting a bug, The better
the bug report, the most chances you have to see it solved in next release. Be
sure to read the <a href="http://www.qeradiant.com/faq/fom-serve/cache/138.html"
target="_new">FAQ Item about bug reports</a>.<br><br>
<font size="+1"><b>Please only use this form for bug reports you find within the latest version of
GtkRadiant. All submissions dealing with versions of GtkRadiant that are not the
current version will be ignored. Thank you.</b></font><br><br>
</font>
<form action="cgi-bin/bugreport.cgi" method=POST> <input type=hidden
name="return_url" value="http://www.qeradiant.com/thanks.shtml"> <input
type=hidden name="subject" value="Bug Report from Ravage bug reports form."><br>
<font color="#CCCCCC"><br>
What CPU do you own?:&nbsp;<input type="Text" name="CPU" align="LEFT" size="40" maxlength="1000"><P>
What Video Card do you own?:&nbsp;<input type=text name="VideoCard" size=34 maxlength=1000><P>
What 3d video card do you own?:&nbsp;<input type=text name="3dvideo" size=27 maxlength=1000><P>
What video drivers are you using?:&nbsp;<input type=text name="VideoDrivers" size=32 maxlength=100><P>
What opengl drivers are being used?:&nbsp;<input type=text name="OpenGLDriver" size=30 maxlength=1000><P>
How much Ram do you have?:&nbsp;<input type=text name="Ram" size=35 maxlength=1000><P>
How much hard drive space do is available?:&nbsp;<input type=text name="Hdd" size=23 maxlength=1000><P>
What operating system are you running?:&nbsp;<input type=text name="OS" size=27 maxlength=1000><P>
What version of Radiant are you using?:&nbsp;<input type=text name="QERVersion" size=25 maxlength=1000><P>
What is your E-MAIL address?:&nbsp;<input type=text name="EmailAddress" size=34 maxlength=50><P>
What is the error?:&nbsp;<br><textarea name="Problem" rows="4" cols="50" maxlength="5000"></textarea><P>
What did you perform to cause the error?:&nbsp;<br><textarea name="Info" rows="4" cols="50" maxlength="10000"></textarea><P>
</font><br><br>
<center><input type=submit value="Submit">&nbsp;&nbsp;<input type=reset value="Clear Form"></center>
</form>
<!-- ================ -->
<!-- END PAGE CONTENT -->
<!-- ================ -->
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="index.shtml">Main</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="tutorials.shtml">Tutorials / Tips</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://plugins.qeradiant.com">Plugins / Coding</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.shtml">Hosted Sites</a></b></td>
</tr>
<tr>
<td bgcolor=000000 width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td bgcolor="000000"><font face=arial size=2 color=#CCCCCC><B>Bug Report</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.shtml">Reviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://forums.gamedesign.net/">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="files.shtml">Files</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="staff.shtml">Credits / Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i><!--#include virtual="/cgi-bin/tips.cgi"--> </i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685><font size="1" color="#CCCCCC"><a href="index.shtml">Main</a> - <a href="tutorials.shtml">Tutorials / Tips</a> - <a href="http://plugins.qeradiant.com">Plugins / Coding</a> - <a href="hosted.shtml">Hosted Sites</a> - <b>Bug Report</b> - <a href="reviews.shtml">Reviews</a> - <a href="interviews.shtml">Interviews</a> - <a href="http://forums.gamedesign.net/">Forums</a> - <a href="files.shtml">Files</a> - <a href="http://www.gamedesign.net">Gamedesign.net</a> - <a href="links.shtml">Links</a> - <a href="staff.shtml">Credits / Staff</a></font></td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>

View File

@ -1,154 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com - QERadiant plugins</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr>
<td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>
<td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Coding - <font size="-2"><i><b>updated Thursday, May 25, 2000</b></i></font></b><nt>
<BR><font color=#FFFFFF><br>
<a href="http://www.qeradiant.com/files.cgi?dirin=PluginSDK/">Q3Radiant 199 Plugin SDK</a>. <i>more info soon</i><br><br>
<a href="coding/api.html">QERadiant plugin API</a> documentation.
<br><i>NOTE: this is documentation for QERadiant Build 147. But the info is still true for Q3Radiant.</i><br><br>
<a href="sdk/index.html">QERadiant 147 Plugin coding SDK</a>. (See <a href="files.html">files</a> for download)<br>
<br><BR>
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>
</tr>
<tr>
<td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td><font face=arial size=2 color=#CCCCCC><B>Plugins Coding</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>
<tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=5&LastLogin=">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i><!--#include virtual="http://www.qeradiant.com/cgi-bin/tips.cgi"--></i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685>
<font size="1" color="#CCCCCC">
<a href="http://www.qeradiant.com">QERadiant Home</a> -
<a href="index.html">Plugins Home</a> -
<b>Plugins Coding</b> -
<a href="hosted.html">Hosted Plugins</a> -
<a href="reviews.html">Plugin Reviews</a> -
<a href="files.html">Plugin Files</a> -
<a href="interviews.html">Interviews</a> -
<a href="http://forums.gamedesign.net/forums">Forums</a> -
<a href="http://www.gamedesign.net">Gamedesign.net</a> -
<a href="links.shtml">Links</a> -
<a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>
</font>
</td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>

View File

@ -1,166 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com - QERadiant plugins</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr>
<td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>
<td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>For Q3Radiant plugins, go to the
<a href="http://www.qeradiant.com/files.cgi?dirin=Q3RPlugins/">main files section</a></b><nt><br>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Files</b><nt>
<BR><font color=#FFFFFF>
<br>
QERadiant 147 files:<br>
<a href="http://mgs.qeradiant.com">MGS</a> download page.<br>
<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginBinaries.zip">Rogue plugin binaries</a>.<br>
<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginSources.zip">Rogue plugin sources</a>.<br>
<a href="ftp://ftp.qeradiant.com/plugins/Qer147PlugSdk.zip">Plugin coding SDK</a>.<br>
<br>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Reviews - Zipped versions</b><nt>
<BR><font color=#FFFFFF>
<br>
QERadiant 147 reviews:<br>
<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginsReview.zip">Rogue plugins review</a>.<br>
<a href="ftp://ftp.qeradiant.com/plugins/HLReview.zip">Half-Life plugin review</a>.
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>
</tr>
<tr>
<td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td><font face=arial size=2 color=#CCCCCC><B>Plugin Files</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=5&LastLogin=">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i><!--#include virtual="http://www.qeradiant.com/cgi-bin/tips.cgi"--></i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685>
<font size="1" color="#CCCCCC">
<a href="http://www.qeradiant.com">QERadiant Home</a> -
<a href="index.html">Plugins Home</a> -
<a href="coding.html">Plugins Coding</a> -
<a href="hosted.html">Hosted Plugins</a> -
<a href="reviews.html">Plugin Reviews</a> -
<b>Plugin Files</b> -
<a href="interviews.html">Interviews</a> -
<a href="http://forums.gamedesign.net/forums">Forums</a> -
<a href="http://www.gamedesign.net">Gamedesign.net</a> -
<a href="links.shtml">Links</a> -
<a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>
</font>
</td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>

View File

@ -1,338 +0,0 @@
<font color="#ffcc00">
<center><b>GTKRadiant 1.1 beta</b></center>
<center> </center>
</font>
<font color="#ffffff">
<!-- -->
<!-- INSTALLATION -->
<!-- -->
<b>Installation</b>
<blockquote>
GtkRadiant 1.1 beta is available for Windows and Linux. Quake III Arena editing
is the only game supported so far. You can get the setup files from several
mirrors:<br>
</blockquote>
<blockquote>
<a href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/"
target="_new">3DDownloads</a><br>
<a href="ftp://ftp.lokigames.com/pub/beta/q3sdk/" target="_new">Loki's
ftp</a><br>
Fileplanet: <a href="http://www.fileplanet.com/index.asp?file=51668"
target="_new">Linux</a> <a href="http://www.fileplanet.com/index.asp?file=51669"
target="_new">Win32 (full)</a> <a
href="http://www.fileplanet.com/index.asp?file=51670" target="_new">Win32
(patch)</a><br>
<a
href="http://www.quakexpert.com/cgi-bin/ftp-ge/utilities.cgi?browse&qeradiant/Gt
kRadiant" target="_new">French mirror at Quakexpert.com</a><br>
</blockquote>
<blockquote>
Win32 Installation instructions:<br>
Grab one of the two setups: a full installation or an upgrade. If you don't know
what to choose, get the full setup (<a
href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/"
target="_new">GtkRadiantSetup-1.1-beta.zip</a> 8Mb), if you have a working
installation of Q3Radiant above 199, or GtkRadiant Alpha, get the patch (<a
href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/"
target="_new">GtkRadiantSetup-1.1-beta-patch.zip</a> 4Mb). GtkRadiant
installation doesn't interfere with your current Q3Radiant installation:
everything will be installed under GtkRadiant/ (whereas usual path for Q3Radiant
is Tools/) and a new file quakev2.qe4 will be installed in baseq3/scripts/
</blockquote>
<blockquote>
Linux Installation:<br>
Get <a
href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/"
target="_new">linuxq3sdk-1.1b.x86.run</a>. Once downloaded, execute it from your
favorite shell (as root).<br>NOTE: this is the full Quake III Arena SDK, it
will install the game source and mod tools as well.
</blockquote>
<!-- -->
<!-- GETTING STARTED -->
<!-- -->
<b>Getting started</b>
<blockquote>
Some features in GtkRadiant have undergone major changes compared to Q3Radiant.
The main difference is the use of Gtk for all the widgets (buttons, lists,
dialog boxes). It looks and feels different but you'll get used to it quickly.
We believe the Gtk toolkit brings a great deal of clarity to the interface.<br>
</blockquote>
<blockquote>
Scroll down to see the full changelog for GtkRadiant. Since it is pretty huge
I'll only go over the new functionalities.
</blockquote>
<blockquote>
<li>
Compilation monitoring: GtkRadiant comes with a modified version of q3map that
reports to GtkRadiant through the network. You get the output of q3map in the
console window. And the compiling errors can be processed. So far it detects
leaks, bad brush planes and winding errors. This requires using the version 2
project files (the newest ones). You can still use the classic compilation
process and set a few options in the preferences: see the 'BSP monitoring'
in the preferenes dialog (Edit > Preferences).<br>
<li>
Sleep mode: you can put Radiant to sleep and have it release all the GL stuff.
Very handy to run Quake 3 Arena engine without eating too much GL resources.
You can trigger sleep mode by hand from File > Sleep, or turn it on
automatically in the BSP monitoring prefs. Expect waking up from sleep mode to
be about the same speed as loading the map
(you need to reload all the textures).<br>
<li>
Improved q3map: the version of q3map that comes in GtkRadiant has been optimized
to require less memory for normal use. The 1.0q version of q3map allocates around
75Mb of RAM on startup. This new version shrinks the startup memory allocation
by around 45Mb, bringing the minimum requirements around 30Mb. Then it will
dynamically allocate as needed. These changes need a lot of testing, don't
hesitate to send some feedback.
<li>
The project file format has changed a bit. The new format (version 2) is in
baseq3/scripts/quakev2.qe4 (it will be loaded by default at startup). Some of
the new features of GtkRadiant rely on this new format, old one is still
supported but you should move to the new one. We are using a template scheme:
when you load quakev2.qe4 a custom project file will be generated and saved for
you in baseq3/scripts/user0.qe4. If you have custom BSP commands, you can edit
that resulting userxx.qe4 to add your stuff. (see below for the new BSP process
monitoring)<br>
<li>
Inspectors: the increments steps are now available in the surface inspector
(S) and in the patch inspector (Shift+S). The keyboard shortcuts Shift+Arrows
are following these increment steps as well.
<li>
Radiant is no longer using the windows registry. All settings are stored in
radiant.ini and savedinfo.bin under the radiant directory (i.e. same directory
as the binary)<br>
<li>
The shortcut keys file has changed name from radiant.ini to shortcuts.ini and a
bit changed syntax. See shortcuts.ini.sample in the distribution for a
sample.<br>
</blockquote>
<!-- -->
<!-- Feedback and discussion -->
<!-- -->
<b>Feedback and discussion</b>
<blockquote>
This is a beta release. We consider it to be ready for production use. It has
been in internal testing for a while, the main problems remaining would be
driver or OS related, so we are tagging it as beta. Overall we will bring
minor improvements until the final release (bringing more plugins in and
fixing issues that will appear). Brand new functionalities will go in 1.2<br>
</blockquote>
<blockquote>
<li>
The documentation is outdated. We'll have a new version of the manual ready.
Until then this page, the <a
href="http://www.qeradiant.com/faq/fom-serve/cache/115.html">faq</a>, the <a
href="news://news.lokigames.com/loki.games.q3sdk">newsgroup</a> and the <a
href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Le
vel+Editing&number=6&DaysPrune=10&LastLogin=">forum</a> are the best
references.<br>
</blockquote>
<blockquote>
QERadiant.com is preparing a site reorganization to handle the newcomer GtkRadiant. The developpement team has grown bigger since Loki Software is involved in the project. They are providing most of the resources (cvs server, mailing list, bug tracking and newsgroup). As time goes we'll open the developpement more and more. For now we are providing the following for feedback and discussion:<br>
<li>
The <a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=10&LastLogin=">Quake 3 World editing forum</a> is a good place for end user discussion.<br>
<li>
Technical topics (specific crashes, driver issues etc.) should be discussed on <a href="news://news.lokigames.com/loki.games.q3sdk">the newsgroup loki.games.q3sdk</a>. Be sure to specify the version of GtkRadiant you are using, the details of your hardware and the platform you are running GtkRadiant on (windows or linux).<br>
<li>
You can view our current list of bugs on <a href="http://fenris.lokigames.com">fenris</a>, the bug tracking server. You can report problems there. Run a <a href="http://fenris.lokigames.com/buglist.cgi?bug_status=New&bug_status=Assigned&bug_status=Reopened&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Q3SDK&component=MapEditor&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&cmdtype=doit&newqueryname=&order=%22Importance%22&form_name=query">query with the Q3SDK program and MapEditor component</a>.<br>
<li>
IRC! .. most of us are IRC whores .. idling a lot on irc.telefragged.com #qeradiant<br>
</blockquote>
<!-- -->
<!-- Credits -->
<!-- -->
<b>Credits</b>
<blockquote>
Waaa... so many people involved in that project, trying to list a few (this is the GtkRadiant contributors, for qeradiant.com see the staff page):<br>
Loki:<br>
Leonardo Zide leo@lokigames.com<br>
Mike Phillips (early testing)<br>
Bernd Kreimeier (overall coordination)<br>
QER.com:<br>
TTimo timo@qeradiant.com<br>
^Fishman (Pablo Zurita) fish@gamedesign.net<br>
Curry plugin Team:<br>
Mike "mickey" Jackman<br>
Tim "Maj" Rennie<br>
William "SmallPileOfGibs" Joseph<br>
PrtView plugin, various bug fixes and q3map guru:<br>
Geoffrey DeWan<br>
Updated shader files, textures, entities.def, keyboard shortcut list and<
overall testing / feedback:<br>
Jean-Francois "Eutectic" Groleau<br>
Improvements and bug fixing to the editor:<br>
Jan Paul "MrElusive" van Waveren, Robert Duffy<br>
Web:<br>
Dave "Bargle" Koenig and Jason "Wolfen" Spencer<br>
FAQ:<br>
Equim and Wex<br>
Thanks to everyone on the beta mailing list and irc.telefragged.com
#qeradiant
for testing and feedback.<br>
</blockquote>
<!-- -->
<!-- Changelog -->
<!-- -->
<b>Changelog</b>
<blockquote>
<pre>
GtkRadiant 1.1 beta Changes
---------------------------
MrElusive:
- bspc 2.1c, MAX_MAPFILE_PLANES bumped up (needed on big maps)
G_Dewan:
- fix to BSP menu order getting mixed up
- fix to bogus noshader error message in q3map
- suppressed winsock2 dependency, only requires winsock1 now
- improved q3map, reducing minimal memory footprint by about 45Mb
leo:
- Fixed q3map crashing if visbytes is greater than the maximum allowed
- fixed texture window not scrolling when last texture is large
- Fixed q3map Makefile
- Fixed +/- numpad keys not working in win32
- Fixed Alt shortcuts not working in win32
- fixed prefab path and user ini in preferences dialog
- fixed add/remove bsp items in project settings dialog
- fixed some console not working in view #3
- fixed warning when exiting in views #2 #3
- Fixed patch inspector not showing after it has been closed
- Fixed load window position bug (saved pos greater than screen resolution)
- Fixed selection nudge bug
- fixed Z window not shrinking small enough in floating windows mode (win32)
- Improved entity windows layout
- Added 'Reset' button to entity dialog
- added LOD for patches, see in prefs for the LOD you want to display on patches
- no more DOS dialog box under windows, Gtk errors and warnings are
redirected to the console
- remember size/position of the entities dialog
- new 128 and 256 grid
- added shift+rclick+mouse move to zoom in/out of the view
(way cool feature! check it out!)
TTimo:
- fixed the Region commands, "Region > Set brush" is working
Region uses the camera as spawn point.
- updated quakev2.qe4 with -vlight options
- added checks in q3map to prevent crashing on allocating a winding too big.
- improved snapshots behaviour, doesn't snapshot non-modified maps
- improved the CycleCapTexturePatch command, now cycle across the 3 planes only
and works on multiple patches in one shot
- fixed the help menu, Help > Help or F1 will try to open the Q3Radiant manual
(if you have office installed) (Help > Links also fixed)
- surface inspector allows to change increments steps and stores them in
registry. General behaviour of the surface inspector has been reworked. Undo
works better on the surface inspector.
- shift+arrows shortcuts now match the increments from the surface inspector
- button 'Match Grid' in the SI to set the increment to current grid
- debug stream between GtkRadiant 1.1 and q3map:
As with the Alpha version, q3map connects to Q3Radiant to report on it's
progress. The progress reporting code has been enhanced with an XML stream. If
your map has errors that need geometry information to be fixed, Radiant can help
you out. To get a grip on this feature, load baseq3/maps/museum.map and compile
it (with BSP monitoring turned on of course).
- cleaned the entity inspector window, better layout management
- two new items in the View > Show menu:
the X, Y and Z axis have been assigned colors (Z: Red, X: Green, Y: Blue)
Show outline draws a colored outline around your view, helping you know what
view is currently active.
Show Axes will draw a small axis base in the upper left corner
GtkRadiant alpha version Changes
--------------------------------
MrElusive:
-q3map 1.0q: fixed a bug in q3map that sometimes cause mapobjects not to be lit
G_Dewan:
-more arrows drawn on entities with relevant angle information
Fishman:
-antialiased lines
leo & TTimo:
- based on Q3Radiant 202
- patched q3map with network code
- shortcut keys are now in shortcuts.ini
the syntax has changed a bit, no spaces between the '='
see shortcuts.sample
- no longer using the registry, settings are stored in radiant.ini and savedinfo.bin
in Radiant directory
- project settings templates:
the project settings file format has changed a bit.
it has version information now, and the setups come with a new quakev2.qe4 file
the project files are true templates, Radiant will read them and then store actual
project settings it uses in baseq3/scripts/user0.qe4 user1.qe4 etc.
- new compilation monitoring
GtkRadiant comes with a modified version of q3map that reports to GtkRadiant through
the network. You get the output of q3map in the console window. And the compiling
errors can be processed (currently it detects leaks)
- sleep mode:
before running Quake 3 Arena to playtest your maps, you can put Radiant to sleep:
manually with File > Sleep command
automatic if you compile and set "Activate sleep mode when running the engine"
</pre>
</blockquote>
</font>

View File

@ -1,170 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com - QERadiant plugins</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr>
<td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>
<td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Hosted plugins</b><nt>
<BR><font color=#FFFFFF><BR>
<a href="http://mgs.qeradiant.com">MGS</a><br>
MGS is a toolbox for map makers .. check out the numerous features !
<br><i>NOTE: the MGS plugin is for QERadiant build 147, it's not available for Q3Radiant yet</i><br>
<br>
<a href="http://halflife.qeradiant.com">Halflife</a><br>
Wanna edit half-life with Radiant? Grab the plugin!
<br><i>NOTE: the halflife plugin is for QERadiant build 147, it's not available for Q3Radiant</i><br>
<br>
<a href="TexToolDoc/TexTool.html">TexTool</a><br>Texture manipulation tools (online documentation)<BR>
<br>
<a href="DeQbsp3Doc/DeQbsp3.html">DeQbsp3</a><br>Q2 BSP to Q3 MAP converter (online documentation)<BR>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Other QERadiant plugins</b><nt>
<BR><font color=#FFFFFF><BR>
<a href="http://tarot.telefragged.com/gensurf">GenSurf</a><br>
GenSurf can create great natural-looking surfaces for you ... and it's for Q3Radiant!
<br><br>
<a href="http://q3build.gamedesign.net">Q3Build</a><br>
Home of Q3Build ... check there for news / update / help ..
<br><br>
<a href="http://curry.sourceforge.net">Curry</a><br>
The GPL shader preview and editing software
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>
</tr>
<tr>
<td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td><font face=arial size=2 color=#CCCCCC><B>Hosted Plugins</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=5&LastLogin=">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i></i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685>
<font size="1" color="#CCCCCC">
<a href="http://www.qeradiant.com">QERadiant Home</a> -
<a href="index.html">Plugins Home</a> -
<a href="coding.html">Plugins Coding</a> -
<b>Hosted Plugins</b> -
<a href="reviews.html">Plugin Reviews</a> -
<a href="files.html">Plugin Files</a> -
<a href="interviews.html">Interviews</a> -
<a href="http://forums.gamedesign.net/forums">Forums</a> -
<a href="http://www.gamedesign.net">Gamedesign.net</a> -
<a href="links.shtml">Links</a> -
<a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>
</font>
</td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>

View File

@ -1,339 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com - QERadiant plugins</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr>
<td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>
<td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Plugins for Q3Radiant 200 - <font size="-2"><i><b>Thursday, June 25, 2000</b></i></font></b><nt>
<BR>
<font color=#FFFFFF>
Here is the current list of plugins publicly available for Q3Radiant 200. If you are writing a plugin for Q3R and are
not listed here let me know so I can add you. Plugin SDK for 200 will be released shortly.<BR><BR>
<a href="http://www.planetquake.com/toolz/">bobToolz</a> - detect overlapping brushes<BR>
<a href="http://curry.sourceforge.net">Curry</a> - shader preview and editing<BR>
<a href="http://q3build.gamedesign.net">Q3Build</a> - a frontend to the BSP tools<BR>
<a href="http://tarot.telefragged.com/gensurf">GenSurf</a> - surface generator<BR>
<a href="TexToolDoc/TexTool.html">TexTool</a> - Texture manipulation tools (online documentation)<BR>
<a href="http://sourceforge.net/project/?group_id=5326">PrtView</a> - Portal viewer for map optimisations<BR>
<a href="http://pk3man.sourceforge.net">Pk3Man</a> - A pk3 manipulation plugin<BR>
<a href="http://sourceforge.net/project/?group_id=2253">MGS</a> - all-purpose tools for MAP manipulations (no official release yet)<BR><BR>
See the <a href="http://www.qeradiant.com/files.cgi?dirin=Q3RPlugins/">plugins file section</a> for
some downloads.<br>
If you want to code your own plugins, need help/ideas/stuff .. get on the mailing list:
<TABLE>
<TD ALIGN="right">
<form method=GET action="http://www.egroups.com/subscribe">
<input type=hidden name="listname" value="radiant-plugins">
<input type=hidden name="SubmitAction" value="Subscribe">
<table width=200 cellspacing=0 cellpadding=2 border=0 bgcolor=#E0E0E0>
<tr>
<td colspan=2 align=center>
<b><z111a>Subscribe to</z> Radiant plugins coding</b>
</td>
</tr><tr>
<td>
<input type=text name="emailaddr" value="enter e-mail" size=21>
</td><td>
<input type=image border=0 alt="Click here to join radiant-plugins"
name="Click here to join radiant-plugins" SRC="imgs/bevel.gif">
</td>
</tr><tr>
<td>
<a href="http://www.egroups.com/list/radiant-plugins/">radiant-plugins
archive</a>
</td><td>
<small><z112>Hosted by</z>
<a href="http://www.egroups.com/">eGroups.com</A></small>
</td>
</tr>
</TABLE>
</form>
</TD>
</TABLE>
You can also meet the staff on irc.telefragged.com #qeradiant
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>
</tr>
<tr>
<td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td><font face=arial size=2 color=#CCCCCC><B>Plugins Home</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=5&LastLogin=">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i></i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685>
<font size="1" color="#CCCCCC">
<a href="http://www.qeradiant.com">QERadiant Home</a> -
<B>Plugins Home</B> -
<a href="coding.html">Plugins Coding</a> -
<a href="hosted.html">Hosted Plugins</a> -
<a href="reviews.html">Plugin Reviews</a> -
<a href="files.html">Plugin Files</a> -
<a href="interviews.html">Interviews</a> -
<a href="http://forums.gamedesign.net/forums">Forums</a> -
<a href="http://www.gamedesign.net">Gamedesign.net</a> -
<a href="links.shtml">Links</a> -
<a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>
</font>
</td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>

View File

@ -1,155 +0,0 @@
<HTML>
<HEAD>
<TITLE>QERadiant.com - QERadiant plugins</TITLE>
</HEAD>
<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">
<center>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>
<td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>
</tr>
<tr>
<td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>
<td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>
</tr>
<tr>
<td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>
</tr>
</table>
<table width=703 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=562 valign=top>
<table border=0 width=562 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>
<td width="497" align="LEFT" nowrap bgcolor="Black"><font face="Arial" size="1" color="#C0C0C0">QERadiant is FREE. It is based on the source code released by id software for QE4 (the editor they used to make Quake2). Do NOT send me or ask to send me money or compensation of any kind. If you have extra money laying around, give it to a good abused children's charity.</td>
<td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>
</tr>
<tr>
<td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>
</tr>
<tr>
<td></td>
<td colspan=2>
&nbsp;<BR><font face=arial size=2><font color=#ffcc00><B>Reviews - <font size="-2"><i><b>Sunday, May 30, 1999</b></i></font></b><nt>
<BR><font color=#FFFFFF><br>
QERadiant 147 plugins Review:<br>
<br>
<a href="reviews/halflife/HLplugReview.html">Half-Life plugin review</a> brought to you by <a href="mailto:ddhall@optusnet.com.au">Kramit</a><br><br>
<a href="reviews/rogue/index.html">Rogue plugins review</a><br><br>
<br><BR>
</table>
</td>
<td width="141" valign="TOP">
<table border=0 width=141 cellpadding=0 cellspacing=0 border=0>
<tr>
<td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>
</tr>
<tr>
<td bgcolor=#003366 align=center>
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></td>
</tr>
<tr>
<td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>
<td><font face=arial size=2 color=#CCCCCC><B>Plugin Reviews</b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Level+Editing&number=6&DaysPrune=5&LastLogin=">Forums</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>
</tr>
<tr>
<td></td>
<td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
<tr>
<td><P>&nbsp;</td>
</tr>
<tr>
<td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>
</tr>
<tr>
<td align="CENTER" bgcolor="#003366">
<table border=0 width=128 cellpadding=2 cellspacing=0 border=0>
<tr>
<td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i><!--#include virtual="http://www.planetquake.com/cgi-bin/tips.cgi"--></i></b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width=703>
<tr>
<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>
<td bgcolor=#003366 align="center" valign="top" nowrap width=685>
<font size="1" color="#CCCCCC">
<a href="http://www.qeradiant.com">QERadiant Home</a> -
<a href="index.html">Plugins Home</a> -
<a href="coding.html">Plugins Coding</a> -
<a href="hosted.html">Hosted Plugins</a> -
<b>Plugin Reviews</b> -
<a href="files.html">Plugin Files</a> -
<a href="interviews.html">Interviews</a> -
<a href="http://forums.gamedesign.net/forums">Forums</a> -
<a href="http://www.gamedesign.net">Gamedesign.net</a> -
<a href="links.shtml">Links</a> -
<a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>
</font>
</td>
<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>
</tr>
</table>
</center>
</BODY>
</HTML>