Sector specials: Give up on trying to find polyobjects in touched sectors

This commit is contained in:
MascaraSnake 2021-12-09 21:15:11 +01:00
parent cc38cd0071
commit a35a3b3edc

View file

@ -4049,8 +4049,6 @@ sector_t *P_MobjTouchingSectorSpecial(mobj_t *mo, INT32 section, INT32 number)
if (result) if (result)
return result; return result;
//TODO: Check polyobjects in node->m_sector
if (!(node->m_sector->flags & SF_TRIGGERSPECIAL_TOUCH)) if (!(node->m_sector->flags & SF_TRIGGERSPECIAL_TOUCH))
continue; continue;
@ -4197,8 +4195,6 @@ sector_t *P_FindPlayerTrigger(player_t *player, line_t *sourceline)
if (caller) if (caller)
return caller; return caller;
//TODO: Check polyobjects in loopsector
if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH)) if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH))
continue; continue;
@ -4990,7 +4986,7 @@ static void P_PlayerOnSpecial3DFloor(player_t *player, sector_t *sector)
} }
} }
static void P_PlayerOnSpecialPolyobj(player_t *player, sector_t *sector) static void P_PlayerOnSpecialPolyobj(player_t *player)
{ {
sector_t *originalsector = player->mo->subsector->sector; sector_t *originalsector = player->mo->subsector->sector;
polyobj_t *po; polyobj_t *po;
@ -4998,7 +4994,6 @@ static void P_PlayerOnSpecialPolyobj(player_t *player, sector_t *sector)
boolean touching = false; boolean touching = false;
boolean inside = false; boolean inside = false;
//TODO: Check polyobjects in sector
for (po = player->mo->subsector->polyList; po; po = (polyobj_t *)(po->link.next)) for (po = player->mo->subsector->polyList; po; po = (polyobj_t *)(po->link.next))
{ {
if (po->flags & POF_NOSPECIALS) if (po->flags & POF_NOSPECIALS)
@ -5018,7 +5013,7 @@ static void P_PlayerOnSpecialPolyobj(player_t *player, sector_t *sector)
if (!P_IsMobjTouchingPolyobj(player->mo, po, polysec)) if (!P_IsMobjTouchingPolyobj(player->mo, po, polysec))
continue; continue;
P_ProcessSpecialSector(player, polysec, sector); P_ProcessSpecialSector(player, polysec, originalsector);
if TELEPORTED(player->mo) return; if TELEPORTED(player->mo) return;
} }
} }
@ -5043,7 +5038,7 @@ void P_PlayerInSpecialSector(player_t *player)
if TELEPORTED(player->mo) return; if TELEPORTED(player->mo) return;
// Allow sector specials to be applied to polyobjects! // Allow sector specials to be applied to polyobjects!
P_PlayerOnSpecialPolyobj(player, originalsector); P_PlayerOnSpecialPolyobj(player);
if TELEPORTED(player->mo) return; if TELEPORTED(player->mo) return;
P_ProcessSpecialSector(player, originalsector, NULL); P_ProcessSpecialSector(player, originalsector, NULL);
@ -5061,10 +5056,6 @@ void P_PlayerInSpecialSector(player_t *player)
P_PlayerOnSpecial3DFloor(player, loopsector); P_PlayerOnSpecial3DFloor(player, loopsector);
if TELEPORTED(player->mo) return; if TELEPORTED(player->mo) return;
// Check polyobjects...
P_PlayerOnSpecialPolyobj(player, loopsector);
if TELEPORTED(player->mo) return;
if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH)) if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH))
continue; continue;