mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Three-way clipping in Mapster32 (still toggled with 'N): on and off as
before, and additionally a mode that doesn't clip against masked walls and sprites. git-svn-id: https://svn.eduke32.com/eduke32@2028 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
9b70a2efbf
commit
9b1d384723
4 changed files with 25 additions and 16 deletions
|
@ -392,7 +392,6 @@ EXTERN int32_t h_xsize[MAXTILES], h_ysize[MAXTILES];
|
||||||
EXTERN int8_t h_xoffs[MAXTILES], h_yoffs[MAXTILES];
|
EXTERN int8_t h_xoffs[MAXTILES], h_yoffs[MAXTILES];
|
||||||
|
|
||||||
extern const char *engineerrstr;
|
extern const char *engineerrstr;
|
||||||
extern char noclip;
|
|
||||||
|
|
||||||
EXTERN int32_t editorzrange[2];
|
EXTERN int32_t editorzrange[2];
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ extern int32_t horiz;
|
||||||
extern vec3_t pos;
|
extern vec3_t pos;
|
||||||
extern int16_t ang, cursectnum;
|
extern int16_t ang, cursectnum;
|
||||||
|
|
||||||
|
extern int8_t m32_clipping; // 0: none, 1: only white walls, 2: like game
|
||||||
|
|
||||||
extern int16_t editstatus, searchit;
|
extern int16_t editstatus, searchit;
|
||||||
extern int32_t searchx, searchy, osearchx, osearchy; //search input
|
extern int32_t searchx, searchy, osearchx, osearchy; //search input
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ static char kensig[64];
|
||||||
|
|
||||||
extern const char *ExtGetVer(void);
|
extern const char *ExtGetVer(void);
|
||||||
|
|
||||||
char noclip=0;
|
int8_t m32_clipping=2;
|
||||||
|
|
||||||
// 0 1 2 3 4 5 6 7
|
// 0 1 2 3 4 5 6 7
|
||||||
// up, down, left, right, lshift, rctrl, lctrl, space
|
// up, down, left, right, lshift, rctrl, lctrl, space
|
||||||
|
@ -836,15 +836,17 @@ void spriteoncfz(int32_t i, int32_t *czptr, int32_t *fzptr)
|
||||||
|
|
||||||
static void move_and_update(int32_t xvect, int32_t yvect, int32_t addshr)
|
static void move_and_update(int32_t xvect, int32_t yvect, int32_t addshr)
|
||||||
{
|
{
|
||||||
if (noclip)
|
if (m32_clipping==0)
|
||||||
{
|
{
|
||||||
pos.x += xvect>>(14+addshr);
|
pos.x += xvect>>(14+addshr);
|
||||||
pos.y += yvect>>(14+addshr);
|
pos.y += yvect>>(14+addshr);
|
||||||
updatesector(pos.x,pos.y, &cursectnum);
|
updatesector(pos.x,pos.y, &cursectnum);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
clipmove(&pos,&cursectnum, xvect>>addshr,yvect>>addshr,
|
clipmove(&pos,&cursectnum, xvect>>addshr,yvect>>addshr,
|
||||||
128,4<<8,4<<8, CLIPMASK0);
|
128,4<<8,4<<8, (m32_clipping==1) ? 0 : CLIPMASK0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mainloop_move(void)
|
static void mainloop_move(void)
|
||||||
|
@ -1040,7 +1042,7 @@ void editinput(void)
|
||||||
|
|
||||||
mainloop_move();
|
mainloop_move();
|
||||||
|
|
||||||
getzrange(&pos,cursectnum, &hiz,&hihit, &loz,&lohit, 128,CLIPMASK0);
|
getzrange(&pos,cursectnum, &hiz,&hihit, &loz,&lohit, 128, (m32_clipping==1)?0:CLIPMASK0);
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
int32_t his = !(hihit&32768), los = !(lohit&32768);
|
int32_t his = !(hihit&32768), los = !(lohit&32768);
|
||||||
|
@ -1118,11 +1120,11 @@ void editinput(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!noclip)
|
if (m32_clipping)
|
||||||
inpclamp(&goalz, hiz+(4<<8), loz-(4<<8));
|
inpclamp(&goalz, hiz+(4<<8), loz-(4<<8));
|
||||||
|
|
||||||
if (zmode == 1) goalz = loz-zlock;
|
if (zmode == 1) goalz = loz-zlock;
|
||||||
if (!noclip && (goalz < hiz+(4<<8)))
|
if (m32_clipping && (goalz < hiz+(4<<8)))
|
||||||
goalz = ((loz+hiz)>>1); //ceiling&floor too close
|
goalz = ((loz+hiz)>>1); //ceiling&floor too close
|
||||||
if (zmode == 1) pos.z = goalz;
|
if (zmode == 1) pos.z = goalz;
|
||||||
|
|
||||||
|
@ -1137,7 +1139,7 @@ void editinput(void)
|
||||||
|
|
||||||
pos.z += hvel;
|
pos.z += hvel;
|
||||||
|
|
||||||
if (!noclip)
|
if (m32_clipping)
|
||||||
{
|
{
|
||||||
if (pos.z > loz-(4<<8)) pos.z = loz-(4<<8), hvel = 0;
|
if (pos.z > loz-(4<<8)) pos.z = loz-(4<<8), hvel = 0;
|
||||||
if (pos.z < hiz+(4<<8)) pos.z = hiz+(4<<8), hvel = 0;
|
if (pos.z < hiz+(4<<8)) pos.z = hiz+(4<<8), hvel = 0;
|
||||||
|
|
|
@ -5330,8 +5330,8 @@ static void Keys3d(void)
|
||||||
if (YAXCHK(!AIMING_AT_CEILING_OR_FLOOR || yax_getbunch(searchsector, AIMING_AT_FLOOR) < 0))
|
if (YAXCHK(!AIMING_AT_CEILING_OR_FLOOR || yax_getbunch(searchsector, AIMING_AT_FLOOR) < 0))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
i = noclip;
|
i = m32_clipping;
|
||||||
noclip = 1;
|
m32_clipping = 0;
|
||||||
|
|
||||||
switch (searchstat)
|
switch (searchstat)
|
||||||
{
|
{
|
||||||
|
@ -5371,7 +5371,7 @@ static void Keys3d(void)
|
||||||
setslope(searchsector, YAX_FLOOR, sector[searchsector].floorheinum);
|
setslope(searchsector, YAX_FLOOR, sector[searchsector].floorheinum);
|
||||||
|
|
||||||
asksave = 1;
|
asksave = 1;
|
||||||
noclip = i;
|
m32_clipping = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8835,8 +8835,11 @@ static int32_t osdcmd_sensitivity(const osdfuncparm_t *parm)
|
||||||
static int32_t osdcmd_noclip(const osdfuncparm_t *parm)
|
static int32_t osdcmd_noclip(const osdfuncparm_t *parm)
|
||||||
{
|
{
|
||||||
UNREFERENCED_PARAMETER(parm);
|
UNREFERENCED_PARAMETER(parm);
|
||||||
noclip = !noclip;
|
m32_clipping--;
|
||||||
OSD_Printf("Clipping %s\n", noclip?"disabled":"enabled");
|
if (m32_clipping < 0)
|
||||||
|
m32_clipping = 2;
|
||||||
|
OSD_Printf("Clipping %s\n", m32_clipping==0 ? "disabled" :
|
||||||
|
(m32_clipping==1 ? "non-masks only" : "enabled"));
|
||||||
|
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
}
|
}
|
||||||
|
@ -9321,7 +9324,7 @@ static int32_t registerosdcommands(void)
|
||||||
|
|
||||||
OSD_RegisterFunction("initgroupfile","initgroupfile <path>: adds a grp file into the game filesystem", osdcmd_initgroupfile);
|
OSD_RegisterFunction("initgroupfile","initgroupfile <path>: adds a grp file into the game filesystem", osdcmd_initgroupfile);
|
||||||
|
|
||||||
OSD_RegisterFunction("noclip","noclip: toggles clipping mode", osdcmd_noclip);
|
OSD_RegisterFunction("m32_clipping","m32_clipping: toggles clipping mode", osdcmd_noclip);
|
||||||
|
|
||||||
OSD_RegisterFunction("quit","quit: exits the editor immediately", osdcmd_quit);
|
OSD_RegisterFunction("quit","quit: exits the editor immediately", osdcmd_quit);
|
||||||
OSD_RegisterFunction("exit","exit: exits the editor immediately", osdcmd_quit);
|
OSD_RegisterFunction("exit","exit: exits the editor immediately", osdcmd_quit);
|
||||||
|
@ -11013,8 +11016,11 @@ static void Keys2d3d(void)
|
||||||
|
|
||||||
if (keystatus[KEYSC_QUOTE] && PRESSED_KEYSC(N)) // 'N
|
if (keystatus[KEYSC_QUOTE] && PRESSED_KEYSC(N)) // 'N
|
||||||
{
|
{
|
||||||
noclip = !noclip;
|
m32_clipping--;
|
||||||
message("Clipping %s", noclip?"disabled":"enabled");
|
if (m32_clipping < 0)
|
||||||
|
m32_clipping = 2;
|
||||||
|
message("Clipping %s", m32_clipping==0 ? "disabled" :
|
||||||
|
(m32_clipping==1 ? "non-masks only" : "enabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eitherCTRL && PRESSED_KEYSC(N)) // CTRL+N
|
if (eitherCTRL && PRESSED_KEYSC(N)) // CTRL+N
|
||||||
|
|
Loading…
Reference in a new issue