Texture filtering and 24 bit lightmaps work again, minor cleanups
This commit is contained in:
parent
d0ac39bba4
commit
911190a5bb
8 changed files with 114 additions and 315 deletions
|
@ -1103,7 +1103,6 @@ extern int inthedos;
|
|||
|
||||
void FogTableRefresh (void);
|
||||
extern cvar_t *r_tranquality;
|
||||
cvar_t *engoo_lookuppalette;
|
||||
|
||||
#ifdef _WIN32
|
||||
extern unsigned char vid_curpal[256*3];
|
||||
|
|
|
@ -227,13 +227,7 @@ float AdaptFovx (float fov_x, float width, float height)
|
|||
|
||||
if (fov_x < 1 || fov_x > 179)
|
||||
fov_x = 90; // fallback to 90 if we fail...
|
||||
// Sys_Error ("Bad fov: %f", fov_x);
|
||||
#ifndef _WIN32
|
||||
if (vid.aspect > 1.10f)
|
||||
return fov_x; // there's no such thing as a widescreen dos machine
|
||||
#endif
|
||||
// if (!scr_fov_adapt.value)
|
||||
// return fov_x;
|
||||
|
||||
if ((x = height / width) == 0.75)
|
||||
return fov_x;
|
||||
a = atan((0.75 - ferv)/ x * tan(fov_x / 360 * M_PI));
|
||||
|
@ -418,69 +412,6 @@ void SCR_StretchRefresh (void)
|
|||
return; // don't even try
|
||||
if (!scalefactorv)
|
||||
return; // don't even try
|
||||
/*
|
||||
screenfake = 0;
|
||||
|
||||
if (screenfake == 1){
|
||||
|
||||
vid.vconwidth = 320;
|
||||
vid.vconheight = 200;
|
||||
scalefactor = vid.width / vid.vconwidth;
|
||||
scalefactorv = vid.height / vid.vconheight;
|
||||
yeahimconsoled = 1;
|
||||
sb_scaled = 1;
|
||||
menu_scaled = 1;
|
||||
console_scaled = 1; // currently bugged
|
||||
vid.recalc_refdef = 1; // yeah
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (screenfake == 2){
|
||||
|
||||
vid.vconwidth = 320;
|
||||
vid.vconheight = 400;
|
||||
scalefactor = vid.width / vid.vconwidth;
|
||||
scalefactorv = vid.height / vid.vconheight;
|
||||
yeahimconsoled = 1;
|
||||
sb_scaled = 1;
|
||||
menu_scaled = 1;
|
||||
console_scaled = 1; // currently bugged
|
||||
vid.recalc_refdef = 1; // yeah
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (screenfake == 3){
|
||||
|
||||
vid.vconwidth = 360;
|
||||
vid.vconheight = 480;
|
||||
scalefactor = vid.width / vid.vconwidth;
|
||||
scalefactorv = vid.height / vid.vconheight;
|
||||
yeahimconsoled = 1;
|
||||
sb_scaled = 1;
|
||||
menu_scaled = 1;
|
||||
console_scaled = 1; // currently bugged
|
||||
vid.recalc_refdef = 1; // yeah
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
if (screenfake == 4){
|
||||
|
||||
vid.vconwidth = 640;
|
||||
vid.vconheight = 400;
|
||||
scalefactor = vid.width / vid.vconwidth;
|
||||
scalefactorv = vid.height / vid.vconheight;
|
||||
yeahimconsoled = 1;
|
||||
sb_scaled = 1;
|
||||
menu_scaled = 1;
|
||||
console_scaled = 1; // currently bugged
|
||||
vid.recalc_refdef = 1; // yeah
|
||||
return;
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
if (scalefactorv < 1){
|
||||
vid.vconheight = vid.height;
|
||||
|
@ -560,8 +491,8 @@ static void SCR_CalcRefdef (void)
|
|||
// bound field of view
|
||||
if (scr_fov->value < 10)
|
||||
Cvar_Set (scr_fov, "10");
|
||||
else if (scr_fov->value > 110)
|
||||
Cvar_Set (scr_fov, "110");
|
||||
else if (scr_fov->value > 179)
|
||||
Cvar_Set (scr_fov, "179");
|
||||
|
||||
vid.recalc_refdef = 0;
|
||||
|
||||
|
@ -1134,8 +1065,6 @@ int oldtranquality;
|
|||
int dyncolor;
|
||||
extern unsigned int shadowhack;
|
||||
void R_ApplyFog (void);
|
||||
void R_ApplyDof (void);
|
||||
|
||||
|
||||
/*
|
||||
==================
|
||||
|
|
|
@ -160,7 +160,7 @@ void D_SetupFrame (void);
|
|||
void D_StartParticles (void);
|
||||
void D_TurnZOn (void);
|
||||
void D_WarpScreen (void);
|
||||
void D_CrapScreen (void);
|
||||
void D_LowResScreen (void);
|
||||
|
||||
void D_FillRect (vrect_t *vrect, int color);
|
||||
void D_DrawRect (void);
|
||||
|
|
|
@ -52,13 +52,11 @@ void (*d_fogspans) (espan_t *pspan); // leilei - alternate fogging method (to g
|
|||
D_Init
|
||||
===============
|
||||
*/
|
||||
extern cvar_t *engoo_lookuppalette;
|
||||
void D_Init (void)
|
||||
{
|
||||
d_subdiv16 = Cvar_Get ("d_subdiv16", "1", CVAR_ORIGINAL);
|
||||
d_mipcap = Cvar_Get ("d_mipcap", "0", CVAR_ORIGINAL);
|
||||
d_mipscale = Cvar_Get ("d_mipscale", "1", CVAR_ORIGINAL);
|
||||
engoo_lookuppalette = Cvar_Get ("engoo_lookuppalette", "0", CVAR_ORIGINAL);
|
||||
d_mipdetail = Cvar_Get ("d_mipdetail", "0", CVAR_ARCHIVE | CVAR_ORIGINAL); // leilei - mip detail cvar (combines mipcap and mipscale)
|
||||
r_wateralpha = Cvar_Get ("r_wateralpha", "1", CVAR_ARCHIVE | CVAR_ORIGINAL); // leilei - water translucency
|
||||
r_drawpolys = false;
|
||||
|
@ -175,8 +173,7 @@ void D_SetupFrame (void)
|
|||
for (i=0 ; i<(NUM_MIPS-1) ; i++)
|
||||
d_scalemip[i] = basemip[i] * d_mipscale->value;
|
||||
}
|
||||
#if id386
|
||||
{
|
||||
|
||||
if (r_filter->value == 1) // Fabien Sanglard's Kernel Filtering
|
||||
{
|
||||
if (d_subdiv16->value)
|
||||
|
@ -222,32 +219,14 @@ void D_SetupFrame (void)
|
|||
if (coloredlights == 2)
|
||||
d_drawspans = D_DrawSpans16_C_Dither;
|
||||
else
|
||||
if (foguse)
|
||||
#ifdef id386fog
|
||||
d_drawspans = D_DrawSpans16_C;
|
||||
#else
|
||||
d_drawspans = D_DrawSpans16_C;
|
||||
#endif
|
||||
else
|
||||
d_drawspans = D_DrawSpans16;
|
||||
d_drawspans = D_DrawSpans16_C;
|
||||
else
|
||||
if (foguse)
|
||||
d_drawspans = D_DrawSpans16_C;
|
||||
else
|
||||
d_drawspans = D_DrawSpans8;
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (d_subdiv16->value == 1)
|
||||
d_drawspans = D_DrawSpans16_C;
|
||||
// else if (d_subdiv16->value == 2)
|
||||
// d_drawspans = D_DrawSpans32_C;
|
||||
// else if (d_subdiv16->value == 3)
|
||||
// d_drawspans = D_DrawSpans16_C_III;
|
||||
else
|
||||
d_drawspans = D_DrawSpans8;
|
||||
#endif
|
||||
|
||||
|
||||
d_aflatcolor = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -227,11 +227,11 @@ void D_WarpScreen (void)
|
|||
|
||||
/*
|
||||
=============
|
||||
D_CrapScreen
|
||||
D_LowResScreen
|
||||
|
||||
=============
|
||||
*/
|
||||
void D_CrapScreen (void)
|
||||
void D_LowResScreen (void)
|
||||
{
|
||||
int w, h;
|
||||
int u,v;
|
||||
|
@ -278,59 +278,6 @@ void D_CrapScreen (void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern cvar_t *temp2;
|
||||
// This is the MH version THANKS MH!!!
|
||||
void D_CrapScreenMH (void)
|
||||
{
|
||||
int w, h;
|
||||
int u,v;
|
||||
byte *dest;
|
||||
int *turb;
|
||||
byte *rowptr[MAXHEIGHT+(AMP2*2)];
|
||||
int column[MAXWIDTH+(AMP2*2)];
|
||||
float wratio, hratio;
|
||||
|
||||
w = r_refdef.vrect.width;
|
||||
h = r_refdef.vrect.height;
|
||||
|
||||
wratio = w / (float)scr_vrect.width;
|
||||
hratio = h / (float)scr_vrect.height;
|
||||
|
||||
for (v=0 ; v<scr_vrect.height+AMP2*2 ; v++)
|
||||
{
|
||||
rowptr[v] = d_viewbuffer + (r_refdef.vrect.y * screenwidth) +
|
||||
(screenwidth * (int)((float)v * hratio * h / (h + AMP2 * 2)));
|
||||
}
|
||||
|
||||
for (u=0 ; u<scr_vrect.width+AMP2*2 ; u++)
|
||||
{
|
||||
column[u] = r_refdef.vrect.x +
|
||||
(int)((float)u * wratio * w / (w + AMP2 * 2));
|
||||
}
|
||||
|
||||
turb = atableofnothingtable;
|
||||
|
||||
dest = vid.buffer + scr_vrect.y * vid.rowbytes + scr_vrect.x;
|
||||
|
||||
for (v = 0; v < scr_vrect.height; v++, dest += vid.rowbytes)
|
||||
{
|
||||
byte *myrow = rowptr[v];
|
||||
int *mycol = column;
|
||||
int *mycolf = column;
|
||||
byte *mydest = dest;
|
||||
|
||||
for (u = 0; u < scr_vrect.width; u += 4, mycol += 4, mydest += 4)
|
||||
{
|
||||
|
||||
mydest[0] = myrow[mycol[0]];
|
||||
mydest[1] = myrow[mycol[1]];
|
||||
mydest[2] = myrow[mycol[2]];
|
||||
mydest[3] = myrow[mycol[3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if !id386
|
||||
|
||||
/*
|
||||
|
@ -353,15 +300,6 @@ void D_DrawTurbulent8Span (void)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// if (foguse) // leilei - fogged case
|
||||
// *pdest++ = (byte*)foggmap[pbase[(s >> 16) + (t >> 16) * cachewidth] + (forg >> 2 & 0xFF00)];
|
||||
// else
|
||||
// *pdest++ = pbase[(s >> 16) + (t >> 16) * cachewidth];
|
||||
//
|
||||
|
||||
#endif // !id386
|
||||
int ferg;
|
||||
void D_DrawTurbulent8Span_Fog (void)
|
||||
|
@ -1584,8 +1522,7 @@ void D_DrawDeferredSpans8_C (espan_t *pspan)
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
extern cvar_t *temp2;
|
||||
// leilei experiment
|
||||
void D_DrawSpans8_C_FilterAlter (espan_t *pspan)
|
||||
{
|
||||
|
|
|
@ -1408,124 +1408,114 @@ void D_DrawSprite (int isthisaparticle)
|
|||
D_SpriteScanRightEdge ();
|
||||
|
||||
|
||||
if (isthisaparticle){
|
||||
if (isthisaparticle == 2){
|
||||
alfer = currentflare->alpha;
|
||||
pacolor = currentflare->color;
|
||||
if (isthisaparticle)
|
||||
{
|
||||
if (isthisaparticle == 2)
|
||||
{
|
||||
alfer = currentflare->alpha;
|
||||
pacolor = currentflare->color;
|
||||
}
|
||||
else if (isthisaparticle){
|
||||
alfer = currentparticle->alpha;
|
||||
pacolor = currentparticle->color;
|
||||
else if (isthisaparticle)
|
||||
{
|
||||
alfer = currentparticle->alpha;
|
||||
pacolor = currentparticle->color;
|
||||
}
|
||||
|
||||
if (flared && alfer < 0.08f)
|
||||
return; // try not to draw totally faded flares.
|
||||
|
||||
if (alfer < 0.01f && !isfading)
|
||||
alfer = 1;
|
||||
if (alfer < 0.005f && isfading)
|
||||
return;
|
||||
|
||||
if (isthisaparticle == 2){
|
||||
if (r_filter->value)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 5);
|
||||
else
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 5);
|
||||
return;
|
||||
}
|
||||
// only do one type for flares
|
||||
|
||||
if (r_filter->value){
|
||||
if (currentparticle->blend == 1) // additeev
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
if (alfer < 0.01f && !isfading)
|
||||
alfer = 1;
|
||||
if (alfer < 0.005f && isfading)
|
||||
return;
|
||||
|
||||
else if (currentparticle->blend == 4) // gelmapped
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 4);
|
||||
else if (currentparticle->blend == 5) // additive glow flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 5);
|
||||
else if (currentparticle->blend == 6) // multiplicatev
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 6);
|
||||
else if (currentparticle->blend == 8) // additive bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 8);
|
||||
else if (currentparticle->blend == 9) // alpha bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 9);
|
||||
else if (currentparticle->blend == 10) // alpha
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 10);
|
||||
else if (currentparticle->blend == 3) // particle color only
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 3);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 2);
|
||||
else
|
||||
D_SpriteDrawSpans_C_Filter (sprite_spans);
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
// only do one type for flares
|
||||
if (isthisaparticle == 2)
|
||||
{
|
||||
|
||||
|
||||
if (currentparticle->blend == 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else if (currentparticle->blend == 4) // gelmapped
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 4);
|
||||
else if (currentparticle->blend == 3)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 3);
|
||||
else if (currentparticle->blend == 5)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 5);
|
||||
else if (currentparticle->blend == 6)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 6);
|
||||
else if (currentparticle->blend == 8) // additive bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 8);
|
||||
else if (currentparticle->blend == 9) // alpha bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 9);
|
||||
else if (currentparticle->blend == 10) // alpha
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 10);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 2);
|
||||
else
|
||||
#if !id386
|
||||
D_SpriteDrawSpans_C (sprite_spans);
|
||||
#else
|
||||
D_SpriteDrawSpans (sprite_spans);
|
||||
#endif
|
||||
|
||||
if (r_filter->value)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 5);
|
||||
else
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 5);
|
||||
return;
|
||||
|
||||
}
|
||||
//return;
|
||||
|
||||
if (r_filter->value)
|
||||
{
|
||||
if (currentparticle->blend == 1) // additeev
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
else if (currentparticle->blend == 4) // gelmapped
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 4);
|
||||
else if (currentparticle->blend == 5) // additive glow flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 5);
|
||||
else if (currentparticle->blend == 6) // multiplicatev
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 6);
|
||||
else if (currentparticle->blend == 8) // additive bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 8);
|
||||
else if (currentparticle->blend == 9) // alpha bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 9);
|
||||
else if (currentparticle->blend == 10) // alpha
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 10);
|
||||
else if (currentparticle->blend == 3) // particle color only
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 3);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 2);
|
||||
else
|
||||
D_SpriteDrawSpans_C_Filter (sprite_spans);
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
{
|
||||
if (currentparticle->blend == 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else if (currentparticle->blend == 4) // gelmapped
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 4);
|
||||
else if (currentparticle->blend == 3)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 3);
|
||||
else if (currentparticle->blend == 5)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 5);
|
||||
else if (currentparticle->blend == 6)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 6);
|
||||
else if (currentparticle->blend == 8) // additive bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 8);
|
||||
else if (currentparticle->blend == 9) // alpha bt colorable like flare
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 9);
|
||||
else if (currentparticle->blend == 10) // alpha
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 10);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 2);
|
||||
else
|
||||
D_SpriteDrawSpans_C (sprite_spans);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
flared = 0; // no it is not a flare. also these frys are not ok.
|
||||
alfer = currententity->alpha;
|
||||
if (alfer < 0.01f)
|
||||
alfer = 1;
|
||||
else
|
||||
alfer = 0;
|
||||
if (r_filter->value){
|
||||
|
||||
if (currententity->effects & EF_ADDITIVE)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
else
|
||||
D_SpriteDrawSpans_C_Filter (sprite_spans);
|
||||
}
|
||||
else
|
||||
alfer = currententity->alpha;
|
||||
if (alfer < 0.01f)
|
||||
alfer = 1;
|
||||
else
|
||||
alfer = 0;
|
||||
|
||||
{
|
||||
|
||||
|
||||
if (currententity->effects & EF_ADDITIVE)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else
|
||||
#if !id386
|
||||
D_SpriteDrawSpans_C (sprite_spans);
|
||||
#else
|
||||
D_SpriteDrawSpans (sprite_spans);
|
||||
#endif
|
||||
|
||||
}
|
||||
if (r_filter->value)
|
||||
{
|
||||
if (currententity->effects & EF_ADDITIVE)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C_Filter (sprite_spans, 1);
|
||||
else
|
||||
D_SpriteDrawSpans_C_Filter (sprite_spans);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (currententity->effects & EF_ADDITIVE)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else if (alfer < 1)
|
||||
D_SpriteDrawSpans_Blend_C (sprite_spans, 1);
|
||||
else
|
||||
D_SpriteDrawSpans_C (sprite_spans);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1828,7 +1828,7 @@ void R_RenderView_ (void)
|
|||
else
|
||||
{
|
||||
if (amilow)
|
||||
D_CrapScreen ();
|
||||
D_LowResScreen ();
|
||||
}
|
||||
|
||||
if (r_viewleaf->contents <= CONTENTS_WATER)
|
||||
|
@ -2002,46 +2002,3 @@ void R_ApplyFog(void)
|
|||
// }
|
||||
}
|
||||
}
|
||||
extern byte transTable[256][256];
|
||||
extern byte addTable[256][256];
|
||||
extern cvar_t *temp3;
|
||||
|
||||
void R_ApplyDorf (void)
|
||||
{
|
||||
int w, h;
|
||||
int u,v;
|
||||
byte *dest;
|
||||
int *turb;
|
||||
byte *rowptr[MAXHEIGHT+(AMP2*2)];
|
||||
int column[MAXWIDTH+(AMP2*2)];
|
||||
float wratio, hratio;
|
||||
|
||||
w = r_refdef.vrect.width / 2;
|
||||
h = r_refdef.vrect.height;
|
||||
|
||||
dest = vid.buffer + scr_vrect.y * vid.rowbytes + scr_vrect.x;
|
||||
|
||||
for (v = 0; v < scr_vrect.height; v++, dest += vid.rowbytes)
|
||||
{
|
||||
|
||||
int *mycol = dest;
|
||||
int *mycolf = dest;
|
||||
byte *mydest = dest;
|
||||
|
||||
|
||||
for (u = 0; u < scr_vrect.width; u += 4, mycol += 4, mydest += 4)
|
||||
{
|
||||
|
||||
if (mydest > 208){
|
||||
mydest[0] = mydest[0];
|
||||
mydest[1] = mydest[0];
|
||||
mydest[2] = mydest[0];
|
||||
mydest[3] = mydest[0];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
8
server/README
Normal file
8
server/README
Normal file
|
@ -0,0 +1,8 @@
|
|||
This is a very basic scratch codebase for NGUNIX.
|
||||
It's been tested with more modern QuakeC compilers but it should compile fine under qcc.
|
||||
|
||||
There are a number of new familar extensions noted in defs.qc that the engine supports. Note that the client has to have a valid model assigned to it for movement to work properly.
|
||||
As long as you don't make use of any of the non-standard engine extensions your compiled progs will work just fine under DOS/WinQuake as well.
|
||||
I couldn't really come up with any examples as of now, so this base is literally the bare-bones required for it to be running in first-person... not even lightstyles are defined.
|
||||
|
||||
Marco Hladik
|
Loading…
Reference in a new issue