mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-24 13:01:47 +00:00
Merge tag 'a'
This commit is contained in:
commit
37578f85b3
1 changed files with 28 additions and 8 deletions
|
@ -4183,16 +4183,26 @@ bool DLevelScript::DoCheckActorTexture(int tid, AActor *activator, int string, b
|
||||||
|
|
||||||
if (floor)
|
if (floor)
|
||||||
{
|
{
|
||||||
|
fixed_t z = actor->Z();
|
||||||
// Looking through planes from top to bottom
|
// Looking through planes from top to bottom
|
||||||
for (i = 0; i < numff; ++i)
|
for (i = 0; i < numff; ++i)
|
||||||
{
|
{
|
||||||
F3DFloor *ff = sec->e->XFloor.ffloors[i];
|
F3DFloor *ff = sec->e->XFloor.ffloors[i];
|
||||||
|
if (!(ff->flags & FF_EXISTS))
|
||||||
|
continue;
|
||||||
|
|
||||||
if ((ff->flags & (FF_EXISTS | FF_SOLID)) == (FF_EXISTS | FF_SOLID) &&
|
if (ff->flags & FF_SOLID &&
|
||||||
actor->Z() >= ff->top.plane->ZatPoint(actor))
|
secpic.isNull() &&
|
||||||
{ // This floor is beneath our feet.
|
z >= ff->top.plane->ZatPoint(actor))
|
||||||
|
{ // This is the highest solid floor beneath our feet
|
||||||
secpic = *ff->top.texture;
|
secpic = *ff->top.texture;
|
||||||
break;
|
}
|
||||||
|
else if (!(ff->flags & FF_SOLID) &&
|
||||||
|
tex == TexMan[*ff->top.texture] &&
|
||||||
|
z <= ff->top.plane->ZatPoint(actor) &&
|
||||||
|
z >= ff->bottom.plane->ZatPoint(actor))
|
||||||
|
{ // Having your feet within a liquid counts as being "on" it
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == numff)
|
if (i == numff)
|
||||||
|
@ -4208,11 +4218,21 @@ bool DLevelScript::DoCheckActorTexture(int tid, AActor *activator, int string, b
|
||||||
{
|
{
|
||||||
F3DFloor *ff = sec->e->XFloor.ffloors[i];
|
F3DFloor *ff = sec->e->XFloor.ffloors[i];
|
||||||
|
|
||||||
if ((ff->flags & (FF_EXISTS | FF_SOLID)) == (FF_EXISTS | FF_SOLID) &&
|
if (!(ff->flags & FF_EXISTS))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (ff->flags & FF_SOLID &&
|
||||||
|
secpic.isNull() &&
|
||||||
z <= ff->bottom.plane->ZatPoint(actor))
|
z <= ff->bottom.plane->ZatPoint(actor))
|
||||||
{ // This floor is above our eyes.
|
{ // This is the lowest solid ceiling above our eyes
|
||||||
secpic = *ff->bottom.texture;
|
secpic = *ff->top.texture;
|
||||||
break;
|
}
|
||||||
|
else if (!(ff->flags & FF_SOLID) &&
|
||||||
|
tex == TexMan[*ff->bottom.texture] &&
|
||||||
|
z <= ff->top.plane->ZatPoint(actor) &&
|
||||||
|
z >= ff->bottom.plane->ZatPoint(actor))
|
||||||
|
{ // Having your eyes within a liquid counts as being "under" it
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
|
|
Loading…
Reference in a new issue