mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 19:20:46 +00:00
If a value of 1 is returned from EVENT_DISPLAYROOMS, don't draw them.
This includes mirrors, rooms and masks. Any value other than 0 or 1 that is returned is considered an error (reserved for future use). git-svn-id: https://svn.eduke32.com/eduke32@2889 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
0cac20c2d6
commit
d1e9116c23
1 changed files with 43 additions and 35 deletions
|
@ -3420,7 +3420,7 @@ void G_HandleMirror(int32_t x, int32_t y, int32_t z, int32_t a, int32_t horiz, i
|
||||||
|
|
||||||
void G_DrawRooms(int32_t snum, int32_t smoothratio)
|
void G_DrawRooms(int32_t snum, int32_t smoothratio)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i, dont_draw;
|
||||||
DukePlayer_t *const p = g_player[snum].ps;
|
DukePlayer_t *const p = g_player[snum].ps;
|
||||||
|
|
||||||
int32_t tmpyx=yxaspect, tmpvr=viewingrange;
|
int32_t tmpyx=yxaspect, tmpvr=viewingrange;
|
||||||
|
@ -3666,64 +3666,72 @@ void G_DrawRooms(int32_t snum, int32_t smoothratio)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dont_draw = 0;
|
||||||
// NOTE: might be rendering off-screen here, so CON commands that draw stuff
|
// NOTE: might be rendering off-screen here, so CON commands that draw stuff
|
||||||
// like showview must cope with that situation or bail out!
|
// like showview must cope with that situation or bail out!
|
||||||
if (apScriptGameEvent[EVENT_DISPLAYROOMS])
|
if (apScriptGameEvent[EVENT_DISPLAYROOMS])
|
||||||
VM_OnEvent(EVENT_DISPLAYROOMS, g_player[screenpeek].ps->i, screenpeek, -1, 0);
|
dont_draw = VM_OnEvent(EVENT_DISPLAYROOMS, g_player[screenpeek].ps->i, screenpeek, -1, 0);
|
||||||
|
|
||||||
ud.camerahoriz = clamp(ud.camerahoriz, HORIZ_MIN, HORIZ_MAX);
|
ud.camerahoriz = clamp(ud.camerahoriz, HORIZ_MIN, HORIZ_MAX);
|
||||||
|
|
||||||
G_HandleMirror(ud.camera.x, ud.camera.y, ud.camera.z, ud.cameraang, ud.camerahoriz, smoothratio);
|
if (dont_draw != 1) // event return values other than 0 and 1 are reserved
|
||||||
|
{
|
||||||
|
if (dont_draw != 0)
|
||||||
|
OSD_Printf(OSD_ERROR "ERROR: EVENT_DISPLAYROOMS return value must be 0 or 1, "
|
||||||
|
"other values are reserved.\n");
|
||||||
|
|
||||||
G_SE40(smoothratio);
|
G_HandleMirror(ud.camera.x, ud.camera.y, ud.camera.z, ud.cameraang, ud.camerahoriz, smoothratio);
|
||||||
|
|
||||||
|
G_SE40(smoothratio);
|
||||||
|
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
if (getrendermode() == 4)
|
if (getrendermode() == 4)
|
||||||
polymer_setanimatesprites(G_DoSpriteAnimations, ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
|
polymer_setanimatesprites(G_DoSpriteAnimations, ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
|
||||||
#endif
|
#endif
|
||||||
// for G_PrintCoords
|
// for G_PrintCoords
|
||||||
dr_viewingrange = viewingrange;
|
dr_viewingrange = viewingrange;
|
||||||
dr_yxaspect = yxaspect;
|
dr_yxaspect = yxaspect;
|
||||||
|
|
||||||
yax_preparedrawrooms();
|
yax_preparedrawrooms();
|
||||||
drawrooms(ud.camera.x,ud.camera.y,ud.camera.z,ud.cameraang,ud.camerahoriz,ud.camerasect);
|
drawrooms(ud.camera.x,ud.camera.y,ud.camera.z,ud.cameraang,ud.camerahoriz,ud.camerasect);
|
||||||
yax_drawrooms(G_DoSpriteAnimations, ud.camerasect, 0, smoothratio);
|
yax_drawrooms(G_DoSpriteAnimations, ud.camerasect, 0, smoothratio);
|
||||||
|
|
||||||
// dupe the sprites touching the portal to the other sector
|
// dupe the sprites touching the portal to the other sector
|
||||||
|
|
||||||
if (ror_sprite != -1)
|
if (ror_sprite != -1)
|
||||||
{
|
|
||||||
spritetype *sp = &sprite[ror_sprite];
|
|
||||||
|
|
||||||
// viewing from bottom
|
|
||||||
if (drawing_ror == 1)
|
|
||||||
{
|
{
|
||||||
int32_t k;
|
spritetype *sp = &sprite[ror_sprite];
|
||||||
|
|
||||||
for (k=headspritesect[sp->sectnum]; k != -1; k=nextspritesect[k])
|
// viewing from bottom
|
||||||
|
if (drawing_ror == 1)
|
||||||
{
|
{
|
||||||
if (sprite[k].picnum != SECTOREFFECTOR && (sprite[k].z >= sp->z))
|
int32_t k;
|
||||||
|
|
||||||
|
for (k=headspritesect[sp->sectnum]; k != -1; k=nextspritesect[k])
|
||||||
{
|
{
|
||||||
Bmemcpy(&tsprite[spritesortcnt], &sprite[k], sizeof(spritetype));
|
if (sprite[k].picnum != SECTOREFFECTOR && (sprite[k].z >= sp->z))
|
||||||
|
{
|
||||||
|
Bmemcpy(&tsprite[spritesortcnt], &sprite[k], sizeof(spritetype));
|
||||||
|
|
||||||
tsprite[spritesortcnt].x += (sprite[sp->yvel].x-sp->x);
|
tsprite[spritesortcnt].x += (sprite[sp->yvel].x-sp->x);
|
||||||
tsprite[spritesortcnt].y += (sprite[sp->yvel].y-sp->y);
|
tsprite[spritesortcnt].y += (sprite[sp->yvel].y-sp->y);
|
||||||
tsprite[spritesortcnt].z = tsprite[spritesortcnt].z - sp->z + actor[sp->yvel].ceilingz;
|
tsprite[spritesortcnt].z = tsprite[spritesortcnt].z - sp->z + actor[sp->yvel].ceilingz;
|
||||||
tsprite[spritesortcnt].sectnum = sprite[sp->yvel].sectnum;
|
tsprite[spritesortcnt].sectnum = sprite[sp->yvel].sectnum;
|
||||||
tsprite[spritesortcnt].owner = k;
|
tsprite[spritesortcnt].owner = k;
|
||||||
|
|
||||||
//OSD_Printf("duped sprite of pic %d at %d %d %d\n",tsprite[spritesortcnt].picnum,tsprite[spritesortcnt].x,tsprite[spritesortcnt].y,tsprite[spritesortcnt].z);
|
//OSD_Printf("duped sprite of pic %d at %d %d %d\n",tsprite[spritesortcnt].picnum,tsprite[spritesortcnt].x,tsprite[spritesortcnt].y,tsprite[spritesortcnt].z);
|
||||||
spritesortcnt++;
|
spritesortcnt++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G_DoSpriteAnimations(ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
|
||||||
|
|
||||||
|
drawing_ror = 0;
|
||||||
|
drawmasks();
|
||||||
}
|
}
|
||||||
|
|
||||||
G_DoSpriteAnimations(ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
|
|
||||||
|
|
||||||
drawing_ror = 0;
|
|
||||||
drawmasks();
|
|
||||||
|
|
||||||
if (g_screenCapture)
|
if (g_screenCapture)
|
||||||
{
|
{
|
||||||
g_screenCapture = 0;
|
g_screenCapture = 0;
|
||||||
|
|
Loading…
Reference in a new issue