mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-28 23:21:58 +00:00
Merge branch SRB2:next into issue1040
This commit is contained in:
commit
15eaa3e8da
6 changed files with 119 additions and 79 deletions
|
@ -1432,14 +1432,22 @@ void OP_ObjectplaceMovement(player_t *player)
|
||||||
//
|
//
|
||||||
// Objectplace related commands.
|
// Objectplace related commands.
|
||||||
//
|
//
|
||||||
/*void Command_Writethings_f(void)
|
void Command_Writethings_f(void)
|
||||||
{
|
{
|
||||||
REQUIRE_INLEVEL;
|
REQUIRE_INLEVEL;
|
||||||
REQUIRE_SINGLEPLAYER;
|
REQUIRE_SINGLEPLAYER;
|
||||||
REQUIRE_OBJECTPLACE;
|
REQUIRE_OBJECTPLACE;
|
||||||
|
|
||||||
P_WriteThings();
|
if (COM_Argc() > 1)
|
||||||
}*/
|
{
|
||||||
|
P_WriteThings(COM_Argv(1));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CONS_Printf(M_GetText("writethings <filename>: write out map things to a file, .txt or .lmp automatically appended.\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Command_ObjectPlace_f(void)
|
void Command_ObjectPlace_f(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,7 +26,7 @@ void cht_Init(void);
|
||||||
// ObjectPlace
|
// ObjectPlace
|
||||||
//
|
//
|
||||||
void Command_ObjectPlace_f(void);
|
void Command_ObjectPlace_f(void);
|
||||||
//void Command_Writethings_f(void);
|
void Command_Writethings_f(void);
|
||||||
|
|
||||||
extern consvar_t cv_opflags, cv_ophoopflags, cv_mapthingnum, cv_speed;
|
extern consvar_t cv_opflags, cv_ophoopflags, cv_mapthingnum, cv_speed;
|
||||||
//extern consvar_t cv_snapto, cv_grid;
|
//extern consvar_t cv_snapto, cv_grid;
|
||||||
|
|
|
@ -913,7 +913,7 @@ void D_RegisterClientCommands(void)
|
||||||
|
|
||||||
// ingame object placing
|
// ingame object placing
|
||||||
COM_AddCommand("objectplace", Command_ObjectPlace_f, COM_LUA);
|
COM_AddCommand("objectplace", Command_ObjectPlace_f, COM_LUA);
|
||||||
//COM_AddCommand("writethings", Command_Writethings_f);
|
COM_AddCommand("writethings", Command_Writethings_f, COM_LUA);
|
||||||
CV_RegisterVar(&cv_speed);
|
CV_RegisterVar(&cv_speed);
|
||||||
CV_RegisterVar(&cv_opflags);
|
CV_RegisterVar(&cv_opflags);
|
||||||
CV_RegisterVar(&cv_ophoopflags);
|
CV_RegisterVar(&cv_ophoopflags);
|
||||||
|
|
127
src/p_setup.c
127
src/p_setup.c
|
@ -877,14 +877,32 @@ static void P_SpawnMapThings(boolean spawnemblems)
|
||||||
P_SpawnEmeraldHunt();
|
P_SpawnEmeraldHunt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void P_WriteTextmap_Things(FILE *f, const mapthing_t *wmapthings); // proto
|
||||||
|
|
||||||
// Experimental groovy write function!
|
// Experimental groovy write function!
|
||||||
/*void P_WriteThings(void)
|
void P_WriteThings(const char *filepath)
|
||||||
{
|
{
|
||||||
size_t i, length;
|
size_t i, length;
|
||||||
mapthing_t *mt;
|
mapthing_t *mt;
|
||||||
UINT8 *savebuffer, *savebuf_p;
|
UINT8 *savebuffer, *savebuf_p;
|
||||||
INT16 temp;
|
INT16 temp;
|
||||||
|
|
||||||
|
if (udmf)
|
||||||
|
{
|
||||||
|
FILE *f = fopen(va("%s.txt", filepath), "w");
|
||||||
|
if (!f)
|
||||||
|
{
|
||||||
|
CONS_Alert(CONS_ERROR, M_GetText("Couldn't write to file %s\n"), filepath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
P_WriteTextmap_Things(f, mapthings);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
CONS_Printf(M_GetText("%s.txt saved.\n"), filepath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
savebuf_p = savebuffer = (UINT8 *)malloc(nummapthings * sizeof (mapthing_t));
|
savebuf_p = savebuffer = (UINT8 *)malloc(nummapthings * sizeof (mapthing_t));
|
||||||
|
|
||||||
if (!savebuf_p)
|
if (!savebuf_p)
|
||||||
|
@ -908,12 +926,12 @@ static void P_SpawnMapThings(boolean spawnemblems)
|
||||||
|
|
||||||
length = savebuf_p - savebuffer;
|
length = savebuf_p - savebuffer;
|
||||||
|
|
||||||
FIL_WriteFile(va("newthings%d.lmp", gamemap), savebuffer, length);
|
FIL_WriteFile(va("%s.lmp", filepath), savebuffer, length);
|
||||||
free(savebuffer);
|
free(savebuffer);
|
||||||
savebuf_p = NULL;
|
savebuf_p = NULL;
|
||||||
|
|
||||||
CONS_Printf(M_GetText("newthings%d.lmp saved.\n"), gamemap);
|
CONS_Printf(M_GetText("%s.lmp saved.\n"), filepath);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// MAP LOADING FUNCTIONS
|
// MAP LOADING FUNCTIONS
|
||||||
|
@ -2150,6 +2168,60 @@ typedef struct
|
||||||
mapthing_t *angleanchor;
|
mapthing_t *angleanchor;
|
||||||
} sectorspecialthings_t;
|
} sectorspecialthings_t;
|
||||||
|
|
||||||
|
static void P_WriteTextmap_Things(FILE *f, const mapthing_t *wmapthings)
|
||||||
|
{
|
||||||
|
size_t i, j;
|
||||||
|
mtag_t firsttag;
|
||||||
|
|
||||||
|
// Actual writing
|
||||||
|
for (i = 0; i < nummapthings; i++)
|
||||||
|
{
|
||||||
|
fprintf(f, "thing // %s\n", sizeu1(i));
|
||||||
|
fprintf(f, "{\n");
|
||||||
|
firsttag = Tag_FGet(&wmapthings[i].tags);
|
||||||
|
if (firsttag != 0)
|
||||||
|
fprintf(f, "id = %d;\n", firsttag);
|
||||||
|
if (wmapthings[i].tags.count > 1)
|
||||||
|
{
|
||||||
|
fprintf(f, "moreids = \"");
|
||||||
|
for (j = 1; j < wmapthings[i].tags.count; j++)
|
||||||
|
{
|
||||||
|
if (j > 1)
|
||||||
|
fprintf(f, " ");
|
||||||
|
fprintf(f, "%d", wmapthings[i].tags.tags[j]);
|
||||||
|
}
|
||||||
|
fprintf(f, "\";\n");
|
||||||
|
}
|
||||||
|
fprintf(f, "x = %d;\n", wmapthings[i].x);
|
||||||
|
fprintf(f, "y = %d;\n", wmapthings[i].y);
|
||||||
|
if (wmapthings[i].z != 0)
|
||||||
|
fprintf(f, "height = %d;\n", wmapthings[i].z);
|
||||||
|
fprintf(f, "angle = %d;\n", wmapthings[i].angle);
|
||||||
|
if (wmapthings[i].pitch != 0)
|
||||||
|
fprintf(f, "pitch = %d;\n", wmapthings[i].pitch);
|
||||||
|
if (wmapthings[i].roll != 0)
|
||||||
|
fprintf(f, "roll = %d;\n", wmapthings[i].roll);
|
||||||
|
if (wmapthings[i].type != 0)
|
||||||
|
fprintf(f, "type = %d;\n", wmapthings[i].type);
|
||||||
|
if (wmapthings[i].spritexscale != FRACUNIT)
|
||||||
|
fprintf(f, "scalex = %f;\n", FIXED_TO_FLOAT(wmapthings[i].spritexscale));
|
||||||
|
if (wmapthings[i].spriteyscale != FRACUNIT)
|
||||||
|
fprintf(f, "scaley = %f;\n", FIXED_TO_FLOAT(wmapthings[i].spriteyscale));
|
||||||
|
if (wmapthings[i].scale != FRACUNIT)
|
||||||
|
fprintf(f, "mobjscale = %f;\n", FIXED_TO_FLOAT(wmapthings[i].scale));
|
||||||
|
if (wmapthings[i].options & MTF_OBJECTFLIP)
|
||||||
|
fprintf(f, "flip = true;\n");
|
||||||
|
for (j = 0; j < NUMMAPTHINGARGS; j++)
|
||||||
|
if (wmapthings[i].args[j] != 0)
|
||||||
|
fprintf(f, "arg%s = %d;\n", sizeu1(j), wmapthings[i].args[j]);
|
||||||
|
for (j = 0; j < NUMMAPTHINGSTRINGARGS; j++)
|
||||||
|
if (mapthings[i].stringargs[j])
|
||||||
|
fprintf(f, "stringarg%s = \"%s\";\n", sizeu1(j), mapthings[i].stringargs[j]);
|
||||||
|
fprintf(f, "}\n");
|
||||||
|
fprintf(f, "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void P_WriteTextmap(void)
|
static void P_WriteTextmap(void)
|
||||||
{
|
{
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
|
@ -2417,52 +2489,7 @@ static void P_WriteTextmap(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(f, "namespace = \"srb2\";\n");
|
fprintf(f, "namespace = \"srb2\";\n");
|
||||||
for (i = 0; i < nummapthings; i++)
|
P_WriteTextmap_Things(f, wmapthings);
|
||||||
{
|
|
||||||
fprintf(f, "thing // %s\n", sizeu1(i));
|
|
||||||
fprintf(f, "{\n");
|
|
||||||
firsttag = Tag_FGet(&wmapthings[i].tags);
|
|
||||||
if (firsttag != 0)
|
|
||||||
fprintf(f, "id = %d;\n", firsttag);
|
|
||||||
if (wmapthings[i].tags.count > 1)
|
|
||||||
{
|
|
||||||
fprintf(f, "moreids = \"");
|
|
||||||
for (j = 1; j < wmapthings[i].tags.count; j++)
|
|
||||||
{
|
|
||||||
if (j > 1)
|
|
||||||
fprintf(f, " ");
|
|
||||||
fprintf(f, "%d", wmapthings[i].tags.tags[j]);
|
|
||||||
}
|
|
||||||
fprintf(f, "\";\n");
|
|
||||||
}
|
|
||||||
fprintf(f, "x = %d;\n", wmapthings[i].x);
|
|
||||||
fprintf(f, "y = %d;\n", wmapthings[i].y);
|
|
||||||
if (wmapthings[i].z != 0)
|
|
||||||
fprintf(f, "height = %d;\n", wmapthings[i].z);
|
|
||||||
fprintf(f, "angle = %d;\n", wmapthings[i].angle);
|
|
||||||
if (wmapthings[i].pitch != 0)
|
|
||||||
fprintf(f, "pitch = %d;\n", wmapthings[i].pitch);
|
|
||||||
if (wmapthings[i].roll != 0)
|
|
||||||
fprintf(f, "roll = %d;\n", wmapthings[i].roll);
|
|
||||||
if (wmapthings[i].type != 0)
|
|
||||||
fprintf(f, "type = %d;\n", wmapthings[i].type);
|
|
||||||
if (wmapthings[i].spritexscale != FRACUNIT)
|
|
||||||
fprintf(f, "scalex = %f;\n", FIXED_TO_FLOAT(wmapthings[i].spritexscale));
|
|
||||||
if (wmapthings[i].spriteyscale != FRACUNIT)
|
|
||||||
fprintf(f, "scaley = %f;\n", FIXED_TO_FLOAT(wmapthings[i].spriteyscale));
|
|
||||||
if (wmapthings[i].scale != FRACUNIT)
|
|
||||||
fprintf(f, "mobjscale = %f;\n", FIXED_TO_FLOAT(wmapthings[i].scale));
|
|
||||||
if (wmapthings[i].options & MTF_OBJECTFLIP)
|
|
||||||
fprintf(f, "flip = true;\n");
|
|
||||||
for (j = 0; j < NUMMAPTHINGARGS; j++)
|
|
||||||
if (wmapthings[i].args[j] != 0)
|
|
||||||
fprintf(f, "arg%s = %d;\n", sizeu1(j), wmapthings[i].args[j]);
|
|
||||||
for (j = 0; j < NUMMAPTHINGSTRINGARGS; j++)
|
|
||||||
if (mapthings[i].stringargs[j])
|
|
||||||
fprintf(f, "stringarg%s = \"%s\";\n", sizeu1(j), mapthings[i].stringargs[j]);
|
|
||||||
fprintf(f, "}\n");
|
|
||||||
fprintf(f, "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < numvertexes; i++)
|
for (i = 0; i < numvertexes; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -71,7 +71,7 @@ boolean P_AddFolder(const char *folderpath);
|
||||||
boolean P_RunSOC(const char *socfilename);
|
boolean P_RunSOC(const char *socfilename);
|
||||||
void P_LoadSoundsRange(UINT16 wadnum, UINT16 first, UINT16 num);
|
void P_LoadSoundsRange(UINT16 wadnum, UINT16 first, UINT16 num);
|
||||||
void P_LoadMusicsRange(UINT16 wadnum, UINT16 first, UINT16 num);
|
void P_LoadMusicsRange(UINT16 wadnum, UINT16 first, UINT16 num);
|
||||||
//void P_WriteThings(void);
|
void P_WriteThings(const char *filepath);
|
||||||
size_t P_PrecacheLevelFlats(void);
|
size_t P_PrecacheLevelFlats(void);
|
||||||
void P_AllocMapHeader(INT16 i);
|
void P_AllocMapHeader(INT16 i);
|
||||||
|
|
||||||
|
|
49
src/r_segs.c
49
src/r_segs.c
|
@ -186,7 +186,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
||||||
if (frontsector->numlights)
|
if (frontsector->numlights)
|
||||||
{
|
{
|
||||||
dc_numlights = frontsector->numlights;
|
dc_numlights = frontsector->numlights;
|
||||||
if (dc_numlights >= dc_maxlights)
|
if (dc_numlights > dc_maxlights)
|
||||||
{
|
{
|
||||||
dc_maxlights = dc_numlights;
|
dc_maxlights = dc_numlights;
|
||||||
dc_lightlist = Z_Realloc(dc_lightlist, sizeof (*dc_lightlist) * dc_maxlights, PU_STATIC, NULL);
|
dc_lightlist = Z_Realloc(dc_lightlist, sizeof (*dc_lightlist) * dc_maxlights, PU_STATIC, NULL);
|
||||||
|
@ -342,7 +342,6 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
||||||
{
|
{
|
||||||
lighttable_t **xwalllights;
|
lighttable_t **xwalllights;
|
||||||
|
|
||||||
sprbotscreen = INT32_MAX;
|
|
||||||
sprtopscreen = windowtop = (centeryfrac - FixedMul(dc_texturemid, spryscale));
|
sprtopscreen = windowtop = (centeryfrac - FixedMul(dc_texturemid, spryscale));
|
||||||
|
|
||||||
realbot = FixedMul(textureheight[texnum], spryscale) + sprtopscreen;
|
realbot = FixedMul(textureheight[texnum], spryscale) + sprtopscreen;
|
||||||
|
@ -449,10 +448,13 @@ static void R_DrawRepeatMaskedColumn(column_t *col, unsigned lengthcol)
|
||||||
|
|
||||||
static void R_DrawRepeatFlippedMaskedColumn(column_t *col, unsigned lengthcol)
|
static void R_DrawRepeatFlippedMaskedColumn(column_t *col, unsigned lengthcol)
|
||||||
{
|
{
|
||||||
do {
|
while (sprtopscreen < sprbotscreen) {
|
||||||
R_DrawFlippedMaskedColumn(col, lengthcol);
|
R_DrawFlippedMaskedColumn(col, lengthcol);
|
||||||
|
if ((INT64)sprtopscreen + (INT64)dc_texheight*spryscale > (INT64)INT32_MAX) // prevent overflow
|
||||||
|
sprtopscreen = INT32_MAX;
|
||||||
|
else
|
||||||
sprtopscreen += dc_texheight*spryscale;
|
sprtopscreen += dc_texheight*spryscale;
|
||||||
} while (sprtopscreen < sprbotscreen);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if a fake floor is translucent.
|
// Returns true if a fake floor is translucent.
|
||||||
|
@ -742,7 +744,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
if (textures[texnum]->flip & 2) // vertically flipped?
|
if (textures[texnum]->flip & 2) // vertically flipped?
|
||||||
colfunc_2s = R_DrawRepeatFlippedMaskedColumn;
|
colfunc_2s = R_DrawRepeatFlippedMaskedColumn;
|
||||||
else
|
else
|
||||||
colfunc_2s = R_DrawRepeatMaskedColumn; // render the usual 2sided single-patch packed texture
|
colfunc_2s = R_DrawRepeatMaskedColumn;
|
||||||
|
|
||||||
lengthcol = textures[texnum]->height;
|
lengthcol = textures[texnum]->height;
|
||||||
|
|
||||||
|
@ -787,6 +789,8 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
else if (bottom_frac > (INT64)CLAMPMIN) sprbotscreen = windowbottom = (fixed_t)bottom_frac;
|
else if (bottom_frac > (INT64)CLAMPMIN) sprbotscreen = windowbottom = (fixed_t)bottom_frac;
|
||||||
else sprbotscreen = windowbottom = CLAMPMIN;
|
else sprbotscreen = windowbottom = CLAMPMIN;
|
||||||
|
|
||||||
|
fixed_t bottomclip = sprbotscreen;
|
||||||
|
|
||||||
top_frac += top_step;
|
top_frac += top_step;
|
||||||
bottom_frac += bottom_step;
|
bottom_frac += bottom_step;
|
||||||
|
|
||||||
|
@ -819,14 +823,13 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
lighttable_t **xwalllights;
|
lighttable_t **xwalllights;
|
||||||
fixed_t height;
|
fixed_t height;
|
||||||
fixed_t bheight = 0;
|
fixed_t bheight = 0;
|
||||||
INT32 solid = 0;
|
boolean lighteffect = false;
|
||||||
INT32 lighteffect = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < dc_numlights; i++)
|
for (i = 0; i < dc_numlights; i++)
|
||||||
{
|
{
|
||||||
// Check if the current light effects the colormap/lightlevel
|
// Check if the current light effects the colormap/lightlevel
|
||||||
rlight = &dc_lightlist[i];
|
rlight = &dc_lightlist[i];
|
||||||
lighteffect = !(dc_lightlist[i].flags & FOF_NOSHADE);
|
lighteffect = !(rlight->flags & FOF_NOSHADE);
|
||||||
if (lighteffect)
|
if (lighteffect)
|
||||||
{
|
{
|
||||||
lightnum = rlight->lightnum;
|
lightnum = rlight->lightnum;
|
||||||
|
@ -859,11 +862,11 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
solid = 0; // don't carry over solid-cutting flag from the previous light
|
|
||||||
|
|
||||||
// Check if the current light can cut the current 3D floor.
|
// Check if the current light can cut the current 3D floor.
|
||||||
|
boolean solid = false;
|
||||||
|
|
||||||
if (rlight->flags & FOF_CUTSOLIDS && !(pfloor->fofflags & FOF_EXTRA))
|
if (rlight->flags & FOF_CUTSOLIDS && !(pfloor->fofflags & FOF_EXTRA))
|
||||||
solid = 1;
|
solid = true;
|
||||||
else if (rlight->flags & FOF_CUTEXTRA && pfloor->fofflags & FOF_EXTRA)
|
else if (rlight->flags & FOF_CUTEXTRA && pfloor->fofflags & FOF_EXTRA)
|
||||||
{
|
{
|
||||||
if (rlight->flags & FOF_EXTRA)
|
if (rlight->flags & FOF_EXTRA)
|
||||||
|
@ -871,13 +874,13 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
// The light is from an extra 3D floor... Check the flags so
|
// The light is from an extra 3D floor... Check the flags so
|
||||||
// there are no undesired cuts.
|
// there are no undesired cuts.
|
||||||
if ((rlight->flags & (FOF_FOG|FOF_SWIMMABLE)) == (pfloor->fofflags & (FOF_FOG|FOF_SWIMMABLE)))
|
if ((rlight->flags & (FOF_FOG|FOF_SWIMMABLE)) == (pfloor->fofflags & (FOF_FOG|FOF_SWIMMABLE)))
|
||||||
solid = 1;
|
solid = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
solid = 1;
|
solid = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
solid = 0;
|
solid = false;
|
||||||
|
|
||||||
height = rlight->height;
|
height = rlight->height;
|
||||||
rlight->height += rlight->heightstep;
|
rlight->height += rlight->heightstep;
|
||||||
|
@ -893,14 +896,14 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
if (lighteffect)
|
if (lighteffect)
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
if (solid && windowtop < bheight)
|
if (solid && windowtop < bheight)
|
||||||
windowtop = bheight;
|
sprtopscreen = windowtop = bheight;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
windowbottom = height;
|
sprbotscreen = windowbottom = height;
|
||||||
if (windowbottom >= sprbotscreen)
|
if (windowbottom >= bottomclip)
|
||||||
{
|
{
|
||||||
windowbottom = sprbotscreen;
|
sprbotscreen = windowbottom = bottomclip;
|
||||||
// draw the texture
|
// draw the texture
|
||||||
colfunc_2s (col, lengthcol);
|
colfunc_2s (col, lengthcol);
|
||||||
for (i++; i < dc_numlights; i++)
|
for (i++; i < dc_numlights; i++)
|
||||||
|
@ -918,10 +921,11 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
||||||
windowtop = bheight;
|
windowtop = bheight;
|
||||||
else
|
else
|
||||||
windowtop = windowbottom + 1;
|
windowtop = windowbottom + 1;
|
||||||
|
sprtopscreen = windowtop;
|
||||||
if (lighteffect)
|
if (lighteffect)
|
||||||
dc_colormap = rlight->rcolormap;
|
dc_colormap = rlight->rcolormap;
|
||||||
}
|
}
|
||||||
windowbottom = sprbotscreen;
|
sprbotscreen = windowbottom = bottomclip;
|
||||||
// draw the texture, if there is any space left
|
// draw the texture, if there is any space left
|
||||||
if (windowtop < windowbottom)
|
if (windowtop < windowbottom)
|
||||||
colfunc_2s (col, lengthcol);
|
colfunc_2s (col, lengthcol);
|
||||||
|
@ -1022,6 +1026,9 @@ static void R_RenderSegLoop (void)
|
||||||
if (bottomtexture)
|
if (bottomtexture)
|
||||||
R_CheckTextureCache(bottomtexture);
|
R_CheckTextureCache(bottomtexture);
|
||||||
|
|
||||||
|
if (dc_numlights)
|
||||||
|
colfunc = colfuncs[COLDRAWFUNC_SHADOWED];
|
||||||
|
|
||||||
for (; rw_x < rw_stopx; rw_x++)
|
for (; rw_x < rw_stopx; rw_x++)
|
||||||
{
|
{
|
||||||
// mark floor / ceiling areas
|
// mark floor / ceiling areas
|
||||||
|
@ -1234,8 +1241,6 @@ static void R_RenderSegLoop (void)
|
||||||
dc_lightlist[i].rcolormap = dc_lightlist[i].extra_colormap->colormap + (xwalllights[pindex] - colormaps);
|
dc_lightlist[i].rcolormap = dc_lightlist[i].extra_colormap->colormap + (xwalllights[pindex] - colormaps);
|
||||||
else
|
else
|
||||||
dc_lightlist[i].rcolormap = xwalllights[pindex];
|
dc_lightlist[i].rcolormap = xwalllights[pindex];
|
||||||
|
|
||||||
colfunc = colfuncs[COLDRAWFUNC_SHADOWED];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2449,7 +2454,7 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
||||||
if (frontsector->numlights)
|
if (frontsector->numlights)
|
||||||
{
|
{
|
||||||
dc_numlights = frontsector->numlights;
|
dc_numlights = frontsector->numlights;
|
||||||
if (dc_numlights >= dc_maxlights)
|
if (dc_numlights > dc_maxlights)
|
||||||
{
|
{
|
||||||
dc_maxlights = dc_numlights;
|
dc_maxlights = dc_numlights;
|
||||||
dc_lightlist = Z_Realloc(dc_lightlist, sizeof (*dc_lightlist) * dc_maxlights, PU_STATIC, NULL);
|
dc_lightlist = Z_Realloc(dc_lightlist, sizeof (*dc_lightlist) * dc_maxlights, PU_STATIC, NULL);
|
||||||
|
|
Loading…
Reference in a new issue