mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-11 07:11:39 +00:00
(Relative) grid lock for Shift-LMB sprite positioning in 3d mode
git-svn-id: https://svn.eduke32.com/eduke32@1299 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
652262626a
commit
e58081645e
1 changed files with 76 additions and 7 deletions
|
@ -5534,8 +5534,13 @@ static void Keys3d(void)
|
||||||
if (eitherALT) Bsprintf(tempbuf,"Z");
|
if (eitherALT) Bsprintf(tempbuf,"Z");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (eitherSHIFT) Bsprintf(tempbuf,"MOVE XY");
|
if (eitherSHIFT)
|
||||||
if (eitherCTRL) Bsprintf(tempbuf,"SIZE");
|
{
|
||||||
|
Bsprintf(tempbuf,"MOVE XY");
|
||||||
|
if (eitherCTRL)
|
||||||
|
Bstrcat(tempbuf, " GRID");
|
||||||
|
}
|
||||||
|
if (eitherCTRL && !eitherSHIFT) Bsprintf(tempbuf,"SIZE");
|
||||||
if (eitherALT) Bsprintf(tempbuf,"MOVE Z");
|
if (eitherALT) Bsprintf(tempbuf,"MOVE Z");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -6267,7 +6272,7 @@ static void Keys3d(void)
|
||||||
if (updownunits) {mouseax=0;}
|
if (updownunits) {mouseax=0;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (eitherCTRL)
|
else if (eitherCTRL && !eitherSHIFT)
|
||||||
{
|
{
|
||||||
mskip=1;
|
mskip=1;
|
||||||
if (mousex!=0)
|
if (mousex!=0)
|
||||||
|
@ -6330,18 +6335,50 @@ static void Keys3d(void)
|
||||||
}
|
}
|
||||||
if (searchstat == 3)
|
if (searchstat == 3)
|
||||||
{
|
{
|
||||||
|
static int32_t sumxvect=0, sumyvect=0;
|
||||||
|
|
||||||
if (mouseaction==1)
|
if (mouseaction==1)
|
||||||
{
|
{
|
||||||
int32_t xvect,yvect;
|
int32_t xvect,yvect,daxvect,dayvect;
|
||||||
int16_t cursectnum=sprite[searchwall].sectnum;
|
int16_t cursectnum=sprite[searchwall].sectnum;
|
||||||
|
int32_t units, gridlock = (eitherCTRL && grid > 0 && grid < 9);
|
||||||
|
|
||||||
xvect = -((mousex*(int32_t)sintable[(ang+2048)&2047])<<3);
|
xvect = -((mousex*(int32_t)sintable[(ang+2048)&2047])<<3);
|
||||||
yvect = -((mousex*(int32_t)sintable[(ang+1536)&2047])<<3);
|
yvect = -((mousex*(int32_t)sintable[(ang+1536)&2047])<<3);
|
||||||
|
|
||||||
|
if (gridlock)
|
||||||
|
{
|
||||||
|
units = (2048 >> grid) << 14;
|
||||||
|
sumxvect += xvect;
|
||||||
|
sumyvect += yvect;
|
||||||
|
if (klabs(sumxvect) >= units)
|
||||||
|
{
|
||||||
|
daxvect = (sumxvect/units)*units;
|
||||||
|
sumxvect %= units;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
daxvect = 0;
|
||||||
|
|
||||||
|
if (klabs(sumyvect) >= units)
|
||||||
|
{
|
||||||
|
dayvect = (sumyvect/units)*units;
|
||||||
|
sumyvect %= units;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dayvect = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
daxvect = xvect;
|
||||||
|
dayvect = yvect;
|
||||||
|
}
|
||||||
clipmove((vec3_t *)&sprite[searchwall],
|
clipmove((vec3_t *)&sprite[searchwall],
|
||||||
&cursectnum,xvect,yvect,128L,4L<<8,4L<<8,spnoclip?1:CLIPMASK0);
|
&cursectnum,daxvect,dayvect,128L,4L<<8,4L<<8,spnoclip?1:CLIPMASK0);
|
||||||
setsprite(searchwall,(vec3_t *)&sprite[searchwall]);
|
setsprite(searchwall,(vec3_t *)&sprite[searchwall]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
sumxvect = sumyvect = 0;
|
||||||
if (mouseaction==2)changedir*=-1;
|
if (mouseaction==2)changedir*=-1;
|
||||||
while (updownunits--)sprite[searchwall].xrepeat = changechar(sprite[searchwall].xrepeat,changedir,smooshyalign,1);
|
while (updownunits--)sprite[searchwall].xrepeat = changechar(sprite[searchwall].xrepeat,changedir,smooshyalign,1);
|
||||||
if (sprite[searchwall].xrepeat < 4)
|
if (sprite[searchwall].xrepeat < 4)
|
||||||
|
@ -6435,18 +6472,50 @@ static void Keys3d(void)
|
||||||
}
|
}
|
||||||
if (searchstat == 3)
|
if (searchstat == 3)
|
||||||
{
|
{
|
||||||
|
static int32_t sumxvect=0, sumyvect=0;
|
||||||
|
|
||||||
if (mouseaction==1)
|
if (mouseaction==1)
|
||||||
{
|
{
|
||||||
int32_t xvect,yvect;
|
int32_t xvect,yvect,daxvect,dayvect;
|
||||||
int16_t cursectnum=sprite[searchwall].sectnum;
|
int16_t cursectnum=sprite[searchwall].sectnum;
|
||||||
|
int32_t units, gridlock = (eitherCTRL && grid > 0 && grid < 9);
|
||||||
|
|
||||||
xvect = -((mousey*(int32_t)sintable[(ang+2560)&2047])<<3);
|
xvect = -((mousey*(int32_t)sintable[(ang+2560)&2047])<<3);
|
||||||
yvect = -((mousey*(int32_t)sintable[(ang+2048)&2047])<<3);
|
yvect = -((mousey*(int32_t)sintable[(ang+2048)&2047])<<3);
|
||||||
|
|
||||||
|
if (gridlock)
|
||||||
|
{
|
||||||
|
units = (2048 >> grid) << 14;
|
||||||
|
sumxvect += xvect;
|
||||||
|
sumyvect += yvect;
|
||||||
|
if (klabs(sumxvect) >= units)
|
||||||
|
{
|
||||||
|
daxvect = (sumxvect/units)*units;
|
||||||
|
sumxvect %= units;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
daxvect = 0;
|
||||||
|
|
||||||
|
if (klabs(sumyvect) >= units)
|
||||||
|
{
|
||||||
|
dayvect = (sumyvect/units)*units;
|
||||||
|
sumyvect %= units;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dayvect = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
daxvect = xvect;
|
||||||
|
dayvect = yvect;
|
||||||
|
}
|
||||||
clipmove((vec3_t *)&sprite[searchwall],
|
clipmove((vec3_t *)&sprite[searchwall],
|
||||||
&cursectnum,xvect,yvect,128L,4L<<8,4L<<8,spnoclip?1:CLIPMASK0);
|
&cursectnum,daxvect,dayvect,128L,4L<<8,4L<<8,spnoclip?1:CLIPMASK0);
|
||||||
setsprite(searchwall,(vec3_t *)&sprite[searchwall]);
|
setsprite(searchwall,(vec3_t *)&sprite[searchwall]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
sumxvect = sumyvect = 0;
|
||||||
while (updownunits--)sprite[searchwall].yrepeat = changechar(sprite[searchwall].yrepeat,changedir,smooshyalign,1);
|
while (updownunits--)sprite[searchwall].yrepeat = changechar(sprite[searchwall].yrepeat,changedir,smooshyalign,1);
|
||||||
if (sprite[searchwall].yrepeat < 4)
|
if (sprite[searchwall].yrepeat < 4)
|
||||||
sprite[searchwall].yrepeat = 4;
|
sprite[searchwall].yrepeat = 4;
|
||||||
|
|
Loading…
Reference in a new issue