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);
int addr;
int num;
int mask;
-
+
buff[0] = '.';
b = buff;
strcpy(buff+1, in);
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
//===========================================================================
//===========================================================================
int WINS_Write(int socket, byte *buf, int len, struct sockaddr_s *addr)
{
- int ret, written;
+ int ret = 0, written;
if (addr)
{
if (name[0] >= '0' && name[0] <= '9')
return PartialIPAddress (name, addr);
-
+
hostentry = gethostbyname (name);
if (!hostentry)
return -1;
float big,dum,sum,temp;
float *vv;
+ imax = 0;
vv=(float*)malloc(sizeof(float)*n);
*d=1.0;
for (i=0;i<n;i++) {
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]));
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 );
}
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;
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 )
else
if ( ti > i )
idst = ti-1;
-
+
for ( tj = 0; tj < 4; tj++ )
{
if ( tj < j )
else
if ( tj > j )
jdst = tj-1;
-
+
if ( ti != i && tj != j )
mb[idst*3 + jdst] = mr[ti*4 + tj ];
}
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;
}
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;
}
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 )
/* 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;
/* 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 )
{
_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 ) )
{
_pico_free( remapFileName );
}
}
-
+
/* model was loaded, so break out of loop */
break;
}
}
-
+
/* free memory used by file buffer */
if( buffer)
_pico_free_file( buffer );
picoModel_t *PicoNewModel( void )
{
picoModel_t *model;
-
+
/* allocate */
model = _pico_alloc( sizeof(picoModel_t) );
if( model == NULL )
/* clear */
memset( model,0,sizeof(picoModel_t) );
-
+
/* model set up */
_pico_zero_bounds( model->mins,model->maxs );
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 );
}
/* dummy check */
if( model == NULL )
return 0;
-
+
/* bare minimums */
/* sea: null surface/shader fix (1s=>0s) */
if( numShaders < 0 )
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 )
{
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;
}
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 )
{
/* 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 );
}
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++ )
{
else if( !_pico_stricmp( name, model->shader[ i ]->name ) )
return model->shader[ i ];
}
-
+
/* named shader not found */
return NULL;
}
{
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 )
{
_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;
}
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 ] );
for( i = 0; i < surface->numColorArrays; i++ )
_pico_free( surface->color[ i ] );
free( surface->color );
-
+
/* free the surface */
_pico_free( surface );
}
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;
numColorArrays = 1;
if( numIndexes < 1 )
numIndexes = 1;
-
+
/* additional vertexes? */
while( numVertexes > surface->maxVertexes ) /* fix */
{
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 */
{
surface->numSTArrays++;
}
}
-
+
/* additional color arrays? */
while( numColorArrays > surface->maxColorArrays ) /* fix */
{
surface->numColorArrays++;
}
}
-
+
/* additional indexes? */
while( numIndexes > surface->maxIndexes ) /* fix */
{
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;
/* sanity check */
if( model == NULL || name == NULL )
return NULL;
-
+
/* walk list */
for( i = 0; i < model->numSurfaces; i++ )
{
return NULL;
if( num < 0 || num >= model->numShaders )
return NULL;
-
+
/* return the shader */
return model->shader[ num ];
}
return NULL;
if( num < 0 || num >= model->numSurfaces )
return NULL;
-
+
/* return the surface */
return model->surface[ 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;
}
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;
}
/* 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;
( 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 )
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 )
{
if( j != numSTs )
continue;
}
-
+
/* check color */
if( numColors > 0 && color != NULL )
{
if( j != numColors )
continue;
}
-
+
/* vertex matches */
return i;
}
-
+
/* nada */
return -1;
}
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 )
_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++ )
{
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 )
{
fabs( diff[ 2 ] ) < EQUAL_NORMAL_EPSILON )
break;
}
-
+
/* add a new vote? */
if( k == numVotes && numVotes < MAX_NORMAL_VOTES )
{
}
}
}
-
+
/* tally votes */
if( numVotes > 0 )
{
_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 ] ) )
{
}
}
}
-
+
/* free normal storage */
_pico_free( normals );
}
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)
/* ram is really cheap nowadays... */
_prm_error_return;
}
-
+
/* doo teh parse */
while( 1 )
{
_pico_parse_skip_rest( p );
continue;
}
-
+
/* block for quick material shader name remapping */
/* materials { "m" (=>|->|=) "s" } */
if( !_pico_stricmp(p->token, "materials" ) )
{
picoShader_t *shader;
char *materialName;
-
-
+
+
/* get material name */
if (_pico_parse( p,1 ) == NULL) break;
if (!strlen(p->token)) continue;
/* 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 );
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 );
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 );
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 );
}
/* end 'materials[' */
}
-
+
/* free both parser and file buffer */
_pico_free_parser( p );
_pico_free_file( remapBuffer );
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 )
{
{
workSurface = model->surface[i];
if ( workSurface->shader == shader )
- {
+ {
break;
}
}
}
/* 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 );
/* 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++ )
}
}
- /* add this vertex to the triangle */
+ /* add this vertex to the triangle */
PicoSetSurfaceIndex ( workSurface , newVertIndex , vertDataIndex );
- }
+ }
}
#define PM_ASE_C
/* uncomment when debugging this module */
-//#define DEBUG_PM_ASE
+//#define DEBUG_PM_ASE
//#define DEBUG_PM_ASE_EX
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 */
/* 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) )
{
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;
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;
}
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 ] );
{
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:
//_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)
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 )
{
{
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];
break;
}
}
-
+
}
/* model texture vertex */
else if (!_pico_stricmp(p->token,"*mesh_tvert"))
/* 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 );
}
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] );
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;
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 )
{
/* parse submaterial index */
if (!_pico_stricmp(p->token,"*submaterial"))
- {
+ {
/* allocate new pico shader */
_pico_parse_int( p , &subMtlId );
{
PicoFreeModel( model );
return NULL;
- }
+ }
subMaterialLevel = level;
}
/* parse material name */
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 );
/* 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"))
{
/* 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 );
/* 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);
}
}
+#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;
p = _pico_new_parser( mtlBuffer, mtlBufSize );
if (p == NULL)
_obj_mtl_error_return;
-
+
/* doo teh .mtl parse */
while( 1 )
{
/* return with success */
return 1;
}
+#endif
/* _obj_load:
* loads a wavefront obj model file.
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.
-
-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.
+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.
*/
//
files = g_slist_append (files, g_strdup (ptr));
}
}
-
+
for (i = 0; i < g_numDirs; i++)
{
strcpy (dirname, g_strDirs[i]);
char filename[PATH_MAX];
//struct dirent *direntry;
GDir *dir;
- //GSList *dirlistptr;
GSList *dirlist = NULL;
if (g_numDirs == (VFS_MAXDIRS-1))
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;
}
char *ptr,*lastptr;
lastptr = file->name;
- while (ptr = strchr(lastptr,'/'))
+ while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)
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.
-
-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.
+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.
*/
//
{
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
return -1;
}
} while (c1);
-
+
return 0; // strings are equal
}
{
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))
else if (strcmp (gamemode, "mp") == 0)
iGameMode = 2;
else
- iGameMode = 0;
+ iGameMode = 0;
} else
iGameMode = 0;
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++;
}
((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
Sys_Printf("vfsExtractRelativePath: %s\n", in);
#endif
-#ifdef _WIN32
+#ifdef _WIN32
if (shorten)
{
// make it short
#else
strcpy(l_in, in);
vfsCleanFileName(l_in);
-#endif // ifdef WIN32
+#endif // ifdef WIN32
#ifdef DBG_RLTPATH
char *ptr,*lastptr;
lastptr = file->name;
- while (ptr = strchr(lastptr,'/'))
+ while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)
// 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;
}
// (for instance when modifying the project settings)
void vfsShutdown ()
{
- wadFile_t *tmpptr;
-
while (g_wadFiles)
{
wadCleanup((wadFile_t *)g_wadFiles->data);
char *ptr,*lastptr;
lastptr = file->name;
- while (ptr = strchr(lastptr,'/'))
+ while ((ptr = strchr(lastptr,'/')) != NULL)
lastptr = ptr+1;
if (strcmp (lastptr, fixed) == 0)
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;
}
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)
+++ /dev/null
-<HTML>\r
-\r
-<HEAD>\r
- <TITLE>QERadiant.com | Bug Report Form</TITLE>\r
-</HEAD>\r
-\r
-\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-<center>\r
-\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft.gif" width=220 height=85 border=0></td>\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
- </tr>\r
- <tr><td width="468" valign="BOTTOM">\r
-<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>\r
- </tr>\r
- <tr>\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
- </tr>\r
-\r
-</table>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
- <td width=562 valign=top>\r
-\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
-\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
- <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>\r
-\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
- </tr>\r
-\r
- <tr>\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td colspan=2>\r
-\r
-<!-- ============================= -->\r
-<!-- PAGE CONTENT - ONLY EDIT HERE -->\r
-<!-- ============================= -->\r
-\r
-<font color="#CCCCCC">\r
-<br><br>\r
-\r
-There are many versions of Radiant out there. It is very common that a company \r
-would release the tools they used to make a game. That's how we have KPRadiant, \r
-SoFRadiant, FAKKRadiant etc.<br><br>\r
-\r
-We are mainly providing support and looking forward to hear bug reports about \r
-the main version we are working on, <a href="http://www.qeradiant.com/gtkradiant.shtml" \r
-target="_new">GtkRadiant</a>. We don't have the resources nor the possibility to \r
-support other versions. (NOTE: if we can direct you somewhere else for help on a \r
-particular editor we can put links here)<br><br>\r
-\r
-Before you submit something, make sure you are on topic: the right editor \r
-(<b>latest version</b>), and an editor related problem (a crash, misbehaviour, a \r
-feature suggestion). We won't answer mapping questions like "how do I do a sky \r
-shader" or "how does func_pendulum work". Try the <a \r
-href="http://www.qeradiant.com/faq" target="_new">FAQ</a> to find links and \r
-forums about mapping stuff.<br><br>\r
-\r
-The leading cause of radiant crashes is video card drivers. It doesn't matter \r
-how new the drivers are, they can still have bugs in them that will crash \r
-Radiant. Most of the time this is due to lack of full featured drivers. Radiant \r
-uses much more of the OpenGL set than quake & derivatives of.<br><br>\r
-\r
-There is a bunch of resources you should read before reporting a bug, The better \r
-the bug report, the most chances you have to see it solved in next release. Be \r
-sure to read the <a href="http://www.qeradiant.com/faq/fom-serve/cache/138.html" \r
-target="_new">FAQ Item about bug reports</a>.<br><br>\r
-\r
-<font size="+1"><b>Please only use this form for bug reports you find within the latest version of \r
-GtkRadiant. All submissions dealing with versions of GtkRadiant that are not the \r
-current version will be ignored. Thank you.</b></font><br><br>\r
-\r
-</font>\r
-\r
-<form action="cgi-bin/bugreport.cgi" method=POST> <input type=hidden \r
-name="return_url" value="http://www.qeradiant.com/thanks.shtml"> <input \r
-type=hidden name="subject" value="Bug Report from Ravage bug reports form."><br> \r
-<font color="#CCCCCC"><br> \r
-\r
-\r
-What CPU do you own?: <input type="Text" name="CPU" align="LEFT" size="40" maxlength="1000"><P>\r
-\r
-What Video Card do you own?: <input type=text name="VideoCard" size=34 maxlength=1000><P>\r
-What 3d video card do you own?: <input type=text name="3dvideo" size=27 maxlength=1000><P>\r
-\r
-What video drivers are you using?: <input type=text name="VideoDrivers" size=32 maxlength=100><P>\r
-What opengl drivers are being used?: <input type=text name="OpenGLDriver" size=30 maxlength=1000><P>\r
-\r
-How much Ram do you have?: <input type=text name="Ram" size=35 maxlength=1000><P>\r
-How much hard drive space do is available?: <input type=text name="Hdd" size=23 maxlength=1000><P>\r
-\r
-What operating system are you running?: <input type=text name="OS" size=27 maxlength=1000><P>\r
-What version of Radiant are you using?: <input type=text name="QERVersion" size=25 maxlength=1000><P>\r
-\r
-What is your E-MAIL address?: <input type=text name="EmailAddress" size=34 maxlength=50><P>\r
-\r
-What is the error?: <br><textarea name="Problem" rows="4" cols="50" maxlength="5000"></textarea><P>\r
-What did you perform to cause the error?: <br><textarea name="Info" rows="4" cols="50" maxlength="10000"></textarea><P>\r
-\r
-\r
-</font><br><br>\r
-\r
-<center><input type=submit value="Submit"> <input type=reset value="Clear Form"></center>\r
-</form>\r
-\r
-<!-- ================ -->\r
-<!-- END PAGE CONTENT -->\r
-<!-- ================ -->\r
- \r
-\r
- </table>\r
- </td>\r
-\r
- <td width="141" valign="TOP">\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td bgcolor=#003366 align=center>\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
-\r
- <tr>\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="index.shtml">Main</a></td>\r
- </tr>\r
-\r
- <tr>\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="tutorials.shtml">Tutorials / Tips</a></b></td>\r
- </tr>\r
-\r
- <tr>\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://plugins.qeradiant.com">Plugins / Coding</a></b></td>\r
- </tr>\r
-\r
- <tr>\r
- <td></td> \r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.shtml">Hosted Sites</a></b></td>\r
- </tr>\r
-\r
- \r
- <tr>\r
-\r
- <td bgcolor=000000 width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
- <td bgcolor="000000"><font face=arial size=2 color=#CCCCCC><B>Bug Report</b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.shtml">Reviews</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="interviews.shtml">Interviews</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://forums.gamedesign.net/">Forums</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="files.shtml">Files</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="links.shtml">Links</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="staff.shtml">Credits / Staff</a></b></td>\r
-\r
- </tr>\r
- </table>\r
-\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td><P> </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
-\r
- </tr>\r
- <tr>\r
-\r
- <td align="CENTER" bgcolor="#003366">\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
-\r
- <tr>\r
- <td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i><!--#include virtual="/cgi-bin/tips.cgi"--> </i></b></td>\r
-\r
- </tr>\r
- </table>\r
-\r
- </td>\r
- </tr>\r
-\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
-\r
- </tr>\r
- </tr>\r
-\r
- </table>\r
- </td>\r
-\r
- </tr>\r
-</table>\r
-\r
-<br>\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-\r
-<tr>\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
-\r
- <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>\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-\r
-</tr>\r
-</table>\r
-\r
-</center>\r
-\r
-</BODY>\r
-</HTML>\r
-\r
+++ /dev/null
-<HTML>\r
-<HEAD>\r
- <TITLE>QERadiant.com - QERadiant plugins</TITLE>\r
-</HEAD>\r
-\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-<center>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
- </tr>\r
- <tr>\r
- <td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>\r
- <td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
- </tr>\r
-</table>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=562 valign=top>\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
- <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>\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td colspan=2>\r
- \r
- <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>\r
-<BR><font color=#FFFFFF><br>\r
-<a href="http://www.qeradiant.com/files.cgi?dirin=PluginSDK/">Q3Radiant 199 Plugin SDK</a>. <i>more info soon</i><br><br>\r
-<a href="coding/api.html">QERadiant plugin API</a> documentation.\r
-<br><i>NOTE: this is documentation for QERadiant Build 147. But the info is still true for Q3Radiant.</i><br><br>\r
-<a href="sdk/index.html">QERadiant 147 Plugin coding SDK</a>. (See <a href="files.html">files</a> for download)<br>\r
-<br><BR>\r
- </table>\r
- </td>\r
- <td width="141" valign="TOP">\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td bgcolor=#003366 align=center>\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>\r
- </tr>\r
- <tr>\r
- <td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B>Plugins Coding</b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>\r
- <tr>\r
- <tr> \r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <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>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td><P> </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td align="CENTER" bgcolor="#003366">\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <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>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-</table>\r
-<br>\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-<tr>\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
- <td bgcolor=#003366 align="center" valign="top" nowrap width=685>\r
- <font size="1" color="#CCCCCC">\r
- <a href="http://www.qeradiant.com">QERadiant Home</a> -\r
- <a href="index.html">Plugins Home</a> -\r
- <b>Plugins Coding</b> -\r
- <a href="hosted.html">Hosted Plugins</a> -\r
- <a href="reviews.html">Plugin Reviews</a> -\r
- <a href="files.html">Plugin Files</a> -\r
- <a href="interviews.html">Interviews</a> -\r
- <a href="http://forums.gamedesign.net/forums">Forums</a> -\r
- <a href="http://www.gamedesign.net">Gamedesign.net</a> -\r
- <a href="links.shtml">Links</a> -\r
- <a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>\r
- </font>\r
- </td>\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-</tr>\r
-</table>\r
-</center>\r
-</BODY>\r
-</HTML>
\ No newline at end of file
+++ /dev/null
-<HTML>\r
-<HEAD>\r
- <TITLE>QERadiant.com - QERadiant plugins</TITLE>\r
-</HEAD>\r
-\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-<center>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
- </tr>\r
- <tr>\r
- <td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>\r
- <td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
- </tr>\r
-</table>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=562 valign=top>\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
- <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>\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td colspan=2>\r
- <BR><font face=arial size=2><font color=#ffcc00><B>For Q3Radiant plugins, go to the \r
-<a href="http://www.qeradiant.com/files.cgi?dirin=Q3RPlugins/">main files section</a></b><nt><br>\r
- \r
- <BR><font face=arial size=2><font color=#ffcc00><B>Files</b><nt>\r
-<BR><font color=#FFFFFF>\r
-<br>\r
-QERadiant 147 files:<br>\r
-<a href="http://mgs.qeradiant.com">MGS</a> download page.<br>\r
-<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginBinaries.zip">Rogue plugin binaries</a>.<br>\r
-<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginSources.zip">Rogue plugin sources</a>.<br>\r
-<a href="ftp://ftp.qeradiant.com/plugins/Qer147PlugSdk.zip">Plugin coding SDK</a>.<br>\r
-<br>\r
- <BR><font face=arial size=2><font color=#ffcc00><B>Reviews - Zipped versions</b><nt>\r
-<BR><font color=#FFFFFF>\r
-<br>\r
-QERadiant 147 reviews:<br>\r
-<a href="ftp://ftp.qeradiant.com/plugins/RoguePluginsReview.zip">Rogue plugins review</a>.<br>\r
-<a href="ftp://ftp.qeradiant.com/plugins/HLReview.zip">Half-Life plugin review</a>.\r
- </table>\r
- </td>\r
- <td width="141" valign="TOP">\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td bgcolor=#003366 align=center>\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B>Plugin Files</b></td>\r
-\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <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>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td><P> </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td align="CENTER" bgcolor="#003366">\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <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>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-</table>\r
-<br>\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-<tr>\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
- <td bgcolor=#003366 align="center" valign="top" nowrap width=685>\r
- <font size="1" color="#CCCCCC">\r
- <a href="http://www.qeradiant.com">QERadiant Home</a> -\r
- <a href="index.html">Plugins Home</a> -\r
- <a href="coding.html">Plugins Coding</a> -\r
- <a href="hosted.html">Hosted Plugins</a> -\r
- <a href="reviews.html">Plugin Reviews</a> -\r
- <b>Plugin Files</b> -\r
- <a href="interviews.html">Interviews</a> -\r
- <a href="http://forums.gamedesign.net/forums">Forums</a> -\r
- <a href="http://www.gamedesign.net">Gamedesign.net</a> -\r
- <a href="links.shtml">Links</a> -\r
- <a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>\r
- </font>\r
- </td>\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-</tr>\r
-</table>\r
-</center>\r
-</BODY>\r
-</HTML>\r
+++ /dev/null
-<font color="#ffcc00">\r
-<center><b>GTKRadiant 1.1 beta</b></center>\r
-<center> </center>\r
-</font>\r
-<font color="#ffffff">\r
-\r
-<!-- -->\r
-<!-- INSTALLATION -->\r
-<!-- -->\r
-<b>Installation</b>\r
-<blockquote>\r
-\r
-GtkRadiant 1.1 beta is available for Windows and Linux. Quake III Arena editing \r
-is the only game supported so far. You can get the setup files from several \r
-mirrors:<br>\r
-\r
-</blockquote>\r
-<blockquote>\r
-\r
-<a href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/" \r
-target="_new">3DDownloads</a><br>\r
-\r
-<a href="ftp://ftp.lokigames.com/pub/beta/q3sdk/" target="_new">Loki's \r
-ftp</a><br> \r
-\r
-Fileplanet: <a href="http://www.fileplanet.com/index.asp?file=51668" \r
-target="_new">Linux</a> <a href="http://www.fileplanet.com/index.asp?file=51669" \r
-target="_new">Win32 (full)</a> <a \r
-href="http://www.fileplanet.com/index.asp?file=51670" target="_new">Win32 \r
-(patch)</a><br>\r
-\r
-<a \r
-href="http://www.quakexpert.com/cgi-bin/ftp-ge/utilities.cgi?browse&qeradiant/Gt\r
-kRadiant" target="_new">French mirror at Quakexpert.com</a><br>\r
-\r
-</blockquote>\r
-\r
-<blockquote>\r
-Win32 Installation instructions:<br>\r
-\r
-Grab one of the two setups: a full installation or an upgrade. If you don't know \r
-what to choose, get the full setup (<a \r
-href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/" \r
-target="_new">GtkRadiantSetup-1.1-beta.zip</a> 8Mb), if you have a working \r
-installation of Q3Radiant above 199, or GtkRadiant Alpha, get the patch (<a \r
-href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/" \r
-target="_new">GtkRadiantSetup-1.1-beta-patch.zip</a> 4Mb). GtkRadiant \r
-installation doesn't interfere with your current Q3Radiant installation: \r
-everything will be installed under GtkRadiant/ (whereas usual path for Q3Radiant \r
-is Tools/) and a new file quakev2.qe4 will be installed in baseq3/scripts/\r
-\r
-</blockquote>\r
-\r
-<blockquote>\r
-Linux Installation:<br>\r
-\r
-Get <a \r
-href="http://www.3ddownloads.com/index.php3?directory=/qeradiant/GtkRadiant/" \r
-target="_new">linuxq3sdk-1.1b.x86.run</a>. Once downloaded, execute it from your \r
-favorite shell (as root).<br>NOTE: this is the full Quake III Arena SDK, it \r
-will install the game source and mod tools as well.\r
-\r
-</blockquote>\r
-\r
-<!-- -->\r
-<!-- GETTING STARTED -->\r
-<!-- -->\r
-<b>Getting started</b>\r
-<blockquote>\r
-\r
-Some features in GtkRadiant have undergone major changes compared to Q3Radiant. \r
-The main difference is the use of Gtk for all the widgets (buttons, lists, \r
-dialog boxes). It looks and feels different but you'll get used to it quickly. \r
-We believe the Gtk toolkit brings a great deal of clarity to the interface.<br>\r
-\r
-</blockquote>\r
-\r
-<blockquote>\r
-\r
-Scroll down to see the full changelog for GtkRadiant. Since it is pretty huge \r
-I'll only go over the new functionalities.\r
-\r
-</blockquote>\r
-\r
-<blockquote>\r
-\r
-<li>\r
-\r
-Compilation monitoring: GtkRadiant comes with a modified version of q3map that \r
-reports to GtkRadiant through the network. You get the output of q3map in the \r
-console window. And the compiling errors can be processed. So far it detects\r
-leaks, bad brush planes and winding errors. This requires using the version 2\r
-project files (the newest ones). You can still use the classic compilation \r
-process and set a few options in the preferences: see the 'BSP monitoring' \r
-in the preferenes dialog (Edit > Preferences).<br>\r
-\r
-<li>\r
-\r
-Sleep mode: you can put Radiant to sleep and have it release all the GL stuff.\r
-Very handy to run Quake 3 Arena engine without eating too much GL resources.\r
-You can trigger sleep mode by hand from File > Sleep, or turn it on\r
-automatically in the BSP monitoring prefs. Expect waking up from sleep mode to\r
-be about the same speed as loading the map\r
-(you need to reload all the textures).<br>\r
-\r
-<li>\r
-\r
-Improved q3map: the version of q3map that comes in GtkRadiant has been optimized\r
-to require less memory for normal use. The 1.0q version of q3map allocates around\r
-75Mb of RAM on startup. This new version shrinks the startup memory allocation\r
-by around 45Mb, bringing the minimum requirements around 30Mb. Then it will\r
-dynamically allocate as needed. These changes need a lot of testing, don't\r
-hesitate to send some feedback.\r
-\r
-<li>\r
-\r
-The project file format has changed a bit. The new format (version 2) is in \r
-baseq3/scripts/quakev2.qe4 (it will be loaded by default at startup). Some of \r
-the new features of GtkRadiant rely on this new format, old one is still \r
-supported but you should move to the new one. We are using a template scheme: \r
-when you load quakev2.qe4 a custom project file will be generated and saved for \r
-you in baseq3/scripts/user0.qe4. If you have custom BSP commands, you can edit \r
-that resulting userxx.qe4 to add your stuff. (see below for the new BSP process \r
-monitoring)<br>\r
-\r
-<li>\r
-\r
-Inspectors: the increments steps are now available in the surface inspector\r
-(S) and in the patch inspector (Shift+S). The keyboard shortcuts Shift+Arrows\r
-are following these increment steps as well. \r
-\r
-<li>\r
-\r
-Radiant is no longer using the windows registry. All settings are stored in \r
-radiant.ini and savedinfo.bin under the radiant directory (i.e. same directory \r
-as the binary)<br>\r
-\r
-<li>\r
-\r
-The shortcut keys file has changed name from radiant.ini to shortcuts.ini and a \r
-bit changed syntax. See shortcuts.ini.sample in the distribution for a \r
-sample.<br>\r
-\r
-</blockquote>\r
-\r
-<!-- -->\r
-<!-- Feedback and discussion -->\r
-<!-- -->\r
-<b>Feedback and discussion</b>\r
-<blockquote>\r
-\r
-This is a beta release. We consider it to be ready for production use. It has\r
-been in internal testing for a while, the main problems remaining would be\r
-driver or OS related, so we are tagging it as beta. Overall we will bring \r
-minor improvements until the final release (bringing more plugins in and \r
-fixing issues that will appear). Brand new functionalities will go in 1.2<br>\r
-\r
-</blockquote>\r
-<blockquote>\r
-\r
-<li>\r
-\r
-The documentation is outdated. We'll have a new version of the manual ready. \r
-Until then this page, the <a \r
-href="http://www.qeradiant.com/faq/fom-serve/cache/115.html">faq</a>, the <a \r
-href="news://news.lokigames.com/loki.games.q3sdk">newsgroup</a> and the <a \r
-href="http://www.quake3world.com/cgi-bin/forumdisplay.cgi?action=topics&forum=Le\r
-vel+Editing&number=6&DaysPrune=10&LastLogin=">forum</a> are the best \r
-references.<br>\r
-\r
-</blockquote>\r
-\r
-<blockquote>\r
-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>\r
-\r
-<li>\r
-\r
-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>\r
-\r
-<li>\r
-\r
-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>\r
-\r
-<li>\r
-\r
-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>\r
-\r
-<li>\r
-\r
-IRC! .. most of us are IRC whores .. idling a lot on irc.telefragged.com #qeradiant<br>\r
-\r
-</blockquote>\r
-\r
-<!-- -->\r
-<!-- Credits -->\r
-<!-- -->\r
-<b>Credits</b>\r
-<blockquote>\r
-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>\r
-Loki:<br>\r
-Leonardo Zide leo@lokigames.com<br>\r
-Mike Phillips (early testing)<br>\r
-Bernd Kreimeier (overall coordination)<br>\r
-QER.com:<br>\r
-TTimo timo@qeradiant.com<br>\r
-^Fishman (Pablo Zurita) fish@gamedesign.net<br>\r
-Curry plugin Team:<br>\r
-Mike "mickey" Jackman<br>\r
-Tim "Maj" Rennie<br>\r
-William "SmallPileOfGibs" Joseph<br>\r
-PrtView plugin, various bug fixes and q3map guru:<br>\r
-Geoffrey DeWan<br>\r
-Updated shader files, textures, entities.def, keyboard shortcut list and<\r
-overall testing / feedback:<br>\r
-Jean-Francois "Eutectic" Groleau<br>\r
-Improvements and bug fixing to the editor:<br> \r
-Jan Paul "MrElusive" van Waveren, Robert Duffy<br>\r
-Web:<br>\r
-Dave "Bargle" Koenig and Jason "Wolfen" Spencer<br>\r
-FAQ:<br>\r
-Equim and Wex<br>\r
-Thanks to everyone on the beta mailing list and irc.telefragged.com \r
-#qeradiant \r
-for testing and feedback.<br>\r
-</blockquote>\r
-\r
-<!-- -->\r
-<!-- Changelog -->\r
-<!-- -->\r
-\r
-<b>Changelog</b>\r
-<blockquote>\r
-<pre>\r
-GtkRadiant 1.1 beta Changes\r
----------------------------\r
-\r
-MrElusive:\r
-- bspc 2.1c, MAX_MAPFILE_PLANES bumped up (needed on big maps)\r
-\r
-G_Dewan:\r
-- fix to BSP menu order getting mixed up\r
-- fix to bogus noshader error message in q3map\r
-- suppressed winsock2 dependency, only requires winsock1 now\r
-- improved q3map, reducing minimal memory footprint by about 45Mb\r
-\r
-leo:\r
-- Fixed q3map crashing if visbytes is greater than the maximum allowed\r
-- fixed texture window not scrolling when last texture is large\r
-- Fixed q3map Makefile\r
-- Fixed +/- numpad keys not working in win32\r
-- Fixed Alt shortcuts not working in win32\r
-- fixed prefab path and user ini in preferences dialog\r
-- fixed add/remove bsp items in project settings dialog\r
-- fixed some console not working in view #3\r
-- fixed warning when exiting in views #2 #3\r
-- Fixed patch inspector not showing after it has been closed\r
-- Fixed load window position bug (saved pos greater than screen resolution)\r
-- Fixed selection nudge bug\r
-- fixed Z window not shrinking small enough in floating windows mode (win32)\r
-- Improved entity windows layout\r
-- Added 'Reset' button to entity dialog\r
-- added LOD for patches, see in prefs for the LOD you want to display on patches\r
-- no more DOS dialog box under windows, Gtk errors and warnings are\r
-redirected to the console\r
-- remember size/position of the entities dialog\r
-- new 128 and 256 grid\r
-\r
-- added shift+rclick+mouse move to zoom in/out of the view\r
-(way cool feature! check it out!)\r
-\r
-TTimo:\r
-- fixed the Region commands, "Region > Set brush" is working\r
-Region uses the camera as spawn point.\r
-- updated quakev2.qe4 with -vlight options\r
-- added checks in q3map to prevent crashing on allocating a winding too big.\r
-- improved snapshots behaviour, doesn't snapshot non-modified maps\r
-- improved the CycleCapTexturePatch command, now cycle across the 3 planes only \r
-and works on multiple patches in one shot\r
-- fixed the help menu, Help > Help or F1 will try to open the Q3Radiant manual \r
-(if you have office installed) (Help > Links also fixed)\r
-- surface inspector allows to change increments steps and stores them in \r
-registry. General behaviour of the surface inspector has been reworked. Undo \r
-works better on the surface inspector.\r
-- shift+arrows shortcuts now match the increments from the surface inspector\r
-- button 'Match Grid' in the SI to set the increment to current grid\r
-\r
-- debug stream between GtkRadiant 1.1 and q3map:\r
-As with the Alpha version, q3map connects to Q3Radiant to report on it's \r
-progress. The progress reporting code has been enhanced with an XML stream. If \r
-your map has errors that need geometry information to be fixed, Radiant can help \r
-you out. To get a grip on this feature, load baseq3/maps/museum.map and compile \r
-it (with BSP monitoring turned on of course).\r
-\r
-- cleaned the entity inspector window, better layout management\r
-\r
-- two new items in the View > Show menu:\r
-the X, Y and Z axis have been assigned colors (Z: Red, X: Green, Y: Blue)\r
-Show outline draws a colored outline around your view, helping you know what \r
-view is currently active.\r
-Show Axes will draw a small axis base in the upper left corner\r
-\r
-GtkRadiant alpha version Changes\r
---------------------------------\r
-\r
-MrElusive:\r
--q3map 1.0q: fixed a bug in q3map that sometimes cause mapobjects not to be lit\r
-\r
-G_Dewan:\r
--more arrows drawn on entities with relevant angle information\r
-\r
-Fishman:\r
--antialiased lines\r
-\r
-leo & TTimo:\r
-- based on Q3Radiant 202\r
-- patched q3map with network code\r
-- shortcut keys are now in shortcuts.ini\r
-the syntax has changed a bit, no spaces between the '='\r
-see shortcuts.sample\r
-- no longer using the registry, settings are stored in radiant.ini and savedinfo.bin\r
-in Radiant directory\r
-- project settings templates:\r
-the project settings file format has changed a bit.\r
-it has version information now, and the setups come with a new quakev2.qe4 file\r
-the project files are true templates, Radiant will read them and then store actual\r
-project settings it uses in baseq3/scripts/user0.qe4 user1.qe4 etc.\r
-- new compilation monitoring\r
-GtkRadiant comes with a modified version of q3map that reports to GtkRadiant through\r
-the network. You get the output of q3map in the console window. And the compiling\r
-errors can be processed (currently it detects leaks)\r
-- sleep mode:\r
-before running Quake 3 Arena to playtest your maps, you can put Radiant to sleep:\r
-manually with File > Sleep command\r
-automatic if you compile and set "Activate sleep mode when running the engine"\r
-</pre>\r
-</blockquote>\r
-\r
-</font>\r
+++ /dev/null
-<HTML>\r
-<HEAD>\r
- <TITLE>QERadiant.com - QERadiant plugins</TITLE>\r
-</HEAD>\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-<center>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
- </tr>\r
- <tr>\r
- <td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>\r
- <td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
- </tr>\r
-</table>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=562 valign=top>\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
- <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>\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td colspan=2>\r
- \r
- <BR><font face=arial size=2><font color=#ffcc00><B>Hosted plugins</b><nt>\r
-<BR><font color=#FFFFFF><BR>\r
-<a href="http://mgs.qeradiant.com">MGS</a><br>\r
-MGS is a toolbox for map makers .. check out the numerous features !\r
-<br><i>NOTE: the MGS plugin is for QERadiant build 147, it's not available for Q3Radiant yet</i><br>\r
-<br>\r
-<a href="http://halflife.qeradiant.com">Halflife</a><br>\r
-Wanna edit half-life with Radiant? Grab the plugin!\r
-<br><i>NOTE: the halflife plugin is for QERadiant build 147, it's not available for Q3Radiant</i><br>\r
-<br>\r
-<a href="TexToolDoc/TexTool.html">TexTool</a><br>Texture manipulation tools (online documentation)<BR>\r
-<br>\r
-<a href="DeQbsp3Doc/DeQbsp3.html">DeQbsp3</a><br>Q2 BSP to Q3 MAP converter (online documentation)<BR>\r
-\r
- <BR><font face=arial size=2><font color=#ffcc00><B>Other QERadiant plugins</b><nt>\r
-<BR><font color=#FFFFFF><BR>\r
-<a href="http://tarot.telefragged.com/gensurf">GenSurf</a><br>\r
-GenSurf can create great natural-looking surfaces for you ... and it's for Q3Radiant!\r
-<br><br>\r
-<a href="http://q3build.gamedesign.net">Q3Build</a><br>\r
-Home of Q3Build ... check there for news / update / help .. \r
-<br><br>\r
-<a href="http://curry.sourceforge.net">Curry</a><br>\r
-The GPL shader preview and editing software\r
- </table>\r
- </td>\r
- <td width="141" valign="TOP">\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td bgcolor=#003366 align=center>\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>\r
- </tr>\r
- <tr>\r
- <td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B>Hosted Plugins</b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <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>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td><P> </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td align="CENTER" bgcolor="#003366">\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i></i></b></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-</table>\r
-<br>\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-<tr>\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
- <td bgcolor=#003366 align="center" valign="top" nowrap width=685>\r
- <font size="1" color="#CCCCCC">\r
- <a href="http://www.qeradiant.com">QERadiant Home</a> -\r
- <a href="index.html">Plugins Home</a> -\r
- <a href="coding.html">Plugins Coding</a> -\r
- <b>Hosted Plugins</b> -\r
- <a href="reviews.html">Plugin Reviews</a> -\r
- <a href="files.html">Plugin Files</a> -\r
- <a href="interviews.html">Interviews</a> -\r
- <a href="http://forums.gamedesign.net/forums">Forums</a> -\r
- <a href="http://www.gamedesign.net">Gamedesign.net</a> -\r
- <a href="links.shtml">Links</a> -\r
- <a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>\r
- </font>\r
- </td>\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-</tr>\r
-</table>\r
-</center>\r
-</BODY>\r
-</HTML>\r
+++ /dev/null
-<HTML>\r
-\r
-<HEAD>\r
-\r
- <TITLE>QERadiant.com - QERadiant plugins</TITLE>\r
-\r
-</HEAD>\r
-\r
-\r
-\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-\r
-<center>\r
-\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>\r
-\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>\r
-\r
- <td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
-\r
- </tr>\r
-\r
-</table>\r
-\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td width=562 valign=top>\r
-\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
-\r
- <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>\r
-\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td colspan=2>\r
-\r
- <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>\r
-<BR>\r
-<font color=#FFFFFF>\r
-Here is the current list of plugins publicly available for Q3Radiant 200. If you are writing a plugin for Q3R and are\r
-not listed here let me know so I can add you. Plugin SDK for 200 will be released shortly.<BR><BR>\r
-<a href="http://www.planetquake.com/toolz/">bobToolz</a> - detect overlapping brushes<BR>\r
-<a href="http://curry.sourceforge.net">Curry</a> - shader preview and editing<BR>\r
-<a href="http://q3build.gamedesign.net">Q3Build</a> - a frontend to the BSP tools<BR>\r
-<a href="http://tarot.telefragged.com/gensurf">GenSurf</a> - surface generator<BR>\r
-<a href="TexToolDoc/TexTool.html">TexTool</a> - Texture manipulation tools (online documentation)<BR>\r
-<a href="http://sourceforge.net/project/?group_id=5326">PrtView</a> - Portal viewer for map optimisations<BR>\r
-<a href="http://pk3man.sourceforge.net">Pk3Man</a> - A pk3 manipulation plugin<BR>\r
-<a href="http://sourceforge.net/project/?group_id=2253">MGS</a> - all-purpose tools for MAP manipulations (no official release yet)<BR><BR>\r
-\r
-See the <a href="http://www.qeradiant.com/files.cgi?dirin=Q3RPlugins/">plugins file section</a> for\r
-some downloads.<br>\r
-\r
-If you want to code your own plugins, need help/ideas/stuff .. get on the mailing list:\r
-<TABLE>\r
-<TD ALIGN="right">\r
-<form method=GET action="http://www.egroups.com/subscribe">\r
-<input type=hidden name="listname" value="radiant-plugins">\r
-<input type=hidden name="SubmitAction" value="Subscribe">\r
-<table width=200 cellspacing=0 cellpadding=2 border=0 bgcolor=#E0E0E0>\r
-<tr>\r
- <td colspan=2 align=center>\r
- <b><z111a>Subscribe to</z> Radiant plugins coding</b>\r
- </td>\r
-</tr><tr>\r
- <td>\r
- <input type=text name="emailaddr" value="enter e-mail" size=21>\r
- </td><td>\r
- <input type=image border=0 alt="Click here to join radiant-plugins"\r
- name="Click here to join radiant-plugins" SRC="imgs/bevel.gif">\r
- </td>\r
-</tr><tr>\r
- <td>\r
- <a href="http://www.egroups.com/list/radiant-plugins/">radiant-plugins\r
- archive</a>\r
- </td><td>\r
- <small><z112>Hosted by</z> \r
- <a href="http://www.egroups.com/">eGroups.com</A></small>\r
- </td>\r
-</tr>\r
-</TABLE>\r
-</form>\r
-</TD>\r
-</TABLE>\r
-\r
-You can also meet the staff on irc.telefragged.com #qeradiant \r
-\r
- </table>\r
-\r
- </td>\r
-\r
- <td width="141" valign="TOP">\r
-\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td bgcolor=#003366 align=center>\r
-\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B>Plugins Home</b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="reviews.html">Plugin Reviews</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>\r
-\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <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>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td></td>\r
-\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>\r
-\r
- </tr>\r
-\r
- </table>\r
-\r
- </td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td><P> </td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td align="CENTER" bgcolor="#003366">\r
-\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
-\r
- <tr>\r
-\r
- <td bgcolor=000000 align=center><font face="Arial" size="1" color="#ffcc00"><P><b><i></i></b></td>\r
-\r
- </tr>\r
-\r
- </table>\r
-\r
- </td>\r
-\r
- </tr>\r
-\r
- <tr>\r
-\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
-\r
- </tr>\r
-\r
- </table>\r
-\r
- </td>\r
-\r
- </tr>\r
-\r
-</table>\r
-\r
-<br>\r
-\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-\r
-<tr>\r
-\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
-\r
- <td bgcolor=#003366 align="center" valign="top" nowrap width=685>\r
-\r
- <font size="1" color="#CCCCCC">\r
-\r
- <a href="http://www.qeradiant.com">QERadiant Home</a> -\r
-\r
- <B>Plugins Home</B> -\r
-\r
- <a href="coding.html">Plugins Coding</a> -\r
-\r
- <a href="hosted.html">Hosted Plugins</a> -\r
-\r
- <a href="reviews.html">Plugin Reviews</a> -\r
-\r
- <a href="files.html">Plugin Files</a> -\r
-\r
- <a href="interviews.html">Interviews</a> -\r
-\r
- <a href="http://forums.gamedesign.net/forums">Forums</a> -\r
-\r
- <a href="http://www.gamedesign.net">Gamedesign.net</a> -\r
-\r
- <a href="links.shtml">Links</a> -\r
-\r
- <a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>\r
-\r
- </font>\r
-\r
- </td>\r
-\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-\r
-</tr>\r
-\r
-</table>\r
-\r
-</center>\r
-\r
-</BODY>\r
-\r
-</HTML>\r
-\r
+++ /dev/null
-<HTML>\r
-<HEAD>\r
- <TITLE>QERadiant.com - QERadiant plugins</TITLE>\r
-</HEAD>\r
-\r
-<BODY BGCOLOR="Black" BACKGROUND="images/background.jpg" link="CCCCCC" vlink="CCCCCC">\r
-<center>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width="220" rowspan="3" valign="TOP"><img src="images/bnr_topleft_plugins.gif" width=220 height=85 border=0></td>\r
- <td width="483" colspan="2" valign="BOTTOM"><img src="images/bnr_top.gif" width=483 height=19 border=0></td>\r
- </tr>\r
- <tr>\r
- <td width="468" valign="BOTTOM"><!--#exec cgi="/banner/ads.pl"--></td>\r
- <td width="15" height="50" valign="MIDDLE"><img src="images/bnr_right.gif" width=15 height=60 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td width="483" colspan="2" valign="TOP"><img src="images/bnr_bottom.gif" width=483 height=6 border=0 align="top"></td>\r
- </tr>\r
-</table>\r
-<table width=703 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=562 valign=top>\r
- <table border=0 width=562 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td width=52><img src="images/statement_left.gif" width=52 height=46 border="0"></td>\r
- <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>\r
- <td width=13><img src="images/statement_right.gif" width=13 height=46 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td colspan=3><img src="images/statement_bottom.gif" width=562 height=7 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td colspan=2>\r
- \r
- <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>\r
-<BR><font color=#FFFFFF><br>\r
-QERadiant 147 plugins Review:<br>\r
-<br>\r
-<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>\r
-<a href="reviews/rogue/index.html">Rogue plugins review</a><br><br>\r
-<br><BR>\r
- \r
- </table>\r
- </td>\r
- <td width="141" valign="TOP">\r
- <table border=0 width=141 cellpadding=0 cellspacing=0 border=0>\r
- <tr>\r
- <td><img src="images/nav_title.gif" width=141 height=22 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td bgcolor=#003366 align=center>\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/index.shtml">Qeradiant Home</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="index.html">Plugins Home</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="coding.html">Plugins Coding</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="hosted.html">Hosted Plugins</a></td>\r
- </tr>\r
- <tr>\r
- <td width=12 align=center><img src="images/yellow.gif" width=8 height=8 border="0"></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B>Plugin Reviews</b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="files.html">Plugin Files</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/faq">FAQ</a></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/interviews.shtml">Interviews</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <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>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.gamedesign.net">Gamedesign.net</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qerdaiant.com/links.shtml">Links</a></b></td>\r
- </tr>\r
- <tr>\r
- <td></td>\r
- <td><font face=arial size=2 color=#CCCCCC><B><a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a></b></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td><P> </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_tip.gif" width=141 height=25 border="0"></td>\r
- </tr>\r
- <tr>\r
- <td align="CENTER" bgcolor="#003366">\r
- <table border=0 width=128 cellpadding=2 cellspacing=0 border=0>\r
- <tr>\r
- <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>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- <tr>\r
- <td><img src="images/nav_bottom.gif" width=141 height=9 border="0"></td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
-</table>\r
-<br>\r
-<table border="0" cellspacing="0" cellpadding="0" width=703>\r
-<tr>\r
-<td width=9><img src="images/footer_left.gif" width=9 height=15 border="0"></td>\r
- <td bgcolor=#003366 align="center" valign="top" nowrap width=685>\r
- <font size="1" color="#CCCCCC">\r
- <a href="http://www.qeradiant.com">QERadiant Home</a> -\r
- <a href="index.html">Plugins Home</a> -\r
- <a href="coding.html">Plugins Coding</a> -\r
- <a href="hosted.html">Hosted Plugins</a> -\r
- <b>Plugin Reviews</b> -\r
- <a href="files.html">Plugin Files</a> -\r
- <a href="interviews.html">Interviews</a> -\r
- <a href="http://forums.gamedesign.net/forums">Forums</a> -\r
- <a href="http://www.gamedesign.net">Gamedesign.net</a> -\r
- <a href="links.shtml">Links</a> -\r
- <a href="http://www.qeradiant.com/staff.shtml">Credits & Staff</a>\r
- </font>\r
- </td>\r
-<td width=9><img src="images/footer_right.gif" width=9 height=15 border="0"></td>\r
-</tr>\r
-</table>\r
-</center>\r
-</BODY>\r
-</HTML>\r