mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 04:24:39 +00:00
- floatified VCrushBusy
This commit is contained in:
parent
b9f192d6ee
commit
d96c7c64c7
1 changed files with 19 additions and 15 deletions
|
@ -1123,9 +1123,9 @@ void ZTranslateSector(sectortype* pSector, XSECTOR* pXSector, int a3, int a4)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
DBloodActor* GetHighestSprite(sectortype* pSector, int nStatus, int* z)
|
DBloodActor* GetHighestSprite(sectortype* pSector, int nStatus, double* z)
|
||||||
{
|
{
|
||||||
*z = pSector->int_floorz();
|
*z = pSector->floorz;
|
||||||
DBloodActor* found = nullptr;
|
DBloodActor* found = nullptr;
|
||||||
|
|
||||||
BloodSectIterator it(pSector);
|
BloodSectIterator it(pSector);
|
||||||
|
@ -1133,11 +1133,11 @@ DBloodActor* GetHighestSprite(sectortype* pSector, int nStatus, int* z)
|
||||||
{
|
{
|
||||||
if (actor->spr.statnum == nStatus || nStatus == kStatFree)
|
if (actor->spr.statnum == nStatus || nStatus == kStatFree)
|
||||||
{
|
{
|
||||||
int top, bottom;
|
double top, bottom;
|
||||||
GetActorExtents(actor, &top, &bottom);
|
GetActorExtents(actor, &top, &bottom);
|
||||||
if (actor->int_pos().Z - top > *z)
|
if (actor->spr.pos.Z - top > *z)
|
||||||
{
|
{
|
||||||
*z = actor->int_pos().Z - top;
|
*z = actor->spr.pos.Z - top;
|
||||||
found = actor;
|
found = actor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1192,22 +1192,26 @@ int VCrushBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
|
||||||
nWave = pXSector->busyWaveA;
|
nWave = pXSector->busyWaveA;
|
||||||
else
|
else
|
||||||
nWave = pXSector->busyWaveB;
|
nWave = pXSector->busyWaveB;
|
||||||
int dz1 = pXSector->int_onCeilZ() - pXSector->int_offCeilZ();
|
double dz1 = pXSector->onCeilZ - pXSector->offCeilZ;
|
||||||
int vc = pXSector->int_offCeilZ();
|
double z1 = pXSector->offCeilZ;
|
||||||
if (dz1 != 0)
|
if (dz1 != 0)
|
||||||
vc += MulScale(dz1, GetWaveValueI(a2, nWave), 16);
|
z1 += dz1 * GetWaveValue(a2, nWave);
|
||||||
int dz2 = pXSector->int_onFloorZ() - pXSector->int_offFloorZ();
|
|
||||||
int v10 = pXSector->int_offFloorZ();
|
double dz2 = pXSector->onFloorZ - pXSector->offFloorZ;
|
||||||
|
double z2 = pXSector->offFloorZ;
|
||||||
if (dz2 != 0)
|
if (dz2 != 0)
|
||||||
v10 += MulScale(dz2, GetWaveValueI(a2, nWave), 16);
|
z2 += dz2 * GetWaveValue(a2, nWave);
|
||||||
int v18;
|
|
||||||
if (GetHighestSprite(pSector, 6, &v18) && vc >= v18)
|
double highZ;
|
||||||
|
if (GetHighestSprite(pSector, 6, &highZ) && z1 >= highZ)
|
||||||
return 1;
|
return 1;
|
||||||
viewInterpolateSector(pSector);
|
viewInterpolateSector(pSector);
|
||||||
|
|
||||||
if (dz1 != 0)
|
if (dz1 != 0)
|
||||||
pSector->set_int_ceilingz(vc);
|
pSector->setceilingz(z1);
|
||||||
if (dz2 != 0)
|
if (dz2 != 0)
|
||||||
pSector->set_int_floorz(v10);
|
pSector->setfloorz(z2);
|
||||||
|
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||||
evSendSector(pSector, pXSector->txID, kCmdLink, initiator);
|
evSendSector(pSector, pXSector->txID, kCmdLink, initiator);
|
||||||
|
|
Loading…
Reference in a new issue