- replaced all fxSpawn calls with fxSpawnActor.

This commit is contained in:
Christoph Oelckers 2021-09-01 01:46:42 +02:00
parent fbe2373972
commit 085bd3a165
7 changed files with 135 additions and 135 deletions

View file

@ -7153,24 +7153,24 @@ void actFireVector(DBloodActor* shooter, int a2, int a3, int a4, int a5, int a6,
if (pVectorData->surfHit[nSurf].fx2 >= 0) {
spritetype* pFX2 = gFX.fxSpawn(pVectorData->surfHit[nSurf].fx2, nSector, x, y, z, 0);
auto pFX2 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, nSector, x, y, z, 0);
if (pFX2 && gModernMap)
pFX2->owner = pShooter->index;
pFX2->s().owner = pShooter->index;
}
if (pVectorData->surfHit[nSurf].fx3 >= 0) {
spritetype* pFX3 = gFX.fxSpawn(pVectorData->surfHit[nSurf].fx3, nSector, x, y, z, 0);
auto pFX3 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, nSector, x, y, z, 0);
if (pFX3 && gModernMap)
pFX3->owner = pShooter->index;
pFX3->s().owner = pShooter->index;
}
#else
if (pVectorData->surfHit[nSurf].fx2 >= 0)
gFX.fxSpawn(pVectorData->surfHit[nSurf].fx2, nSector, x, y, z, 0);
gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, nSector, x, y, z, 0);
if (pVectorData->surfHit[nSurf].fx3 >= 0)
gFX.fxSpawn(pVectorData->surfHit[nSurf].fx3, nSector, x, y, z, 0);
gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, nSector, x, y, z, 0);
#endif
if (pVectorData->surfHit[nSurf].fxSnd >= 0)

View file

@ -1462,9 +1462,10 @@ void removeLeech(DBloodActor* actLeech, bool delSprite)
if (actLeech != NULL)
{
auto const pLeech = &actLeech->s();
spritetype* pEffect = gFX.fxSpawn((FX_ID)52, pLeech->sectnum, pLeech->x, pLeech->y, pLeech->z, pLeech->ang);
if (pEffect != NULL)
auto effectactor = gFX.fxSpawnActor((FX_ID)52, pLeech->sectnum, pLeech->x, pLeech->y, pLeech->z, pLeech->ang);
if (effectactor != NULL)
{
spritetype* pEffect = &effectactor->s();
pEffect->cstat = CSTAT_SPRITE_ALIGNMENT_FACING;
pEffect->pal = 6;
int repeat = 64 + Random(50);

View file

@ -46,12 +46,12 @@ void fxFlameLick(DBloodActor* actor, int) // 0
int x = pSprite->x + dx;
int y = pSprite->y + dy;
int z = bottom-Random(bottom-top);
spritetype *pFX = gFX.fxSpawn(FX_32, pSprite->sectnum, x, y, z, 0);
auto pFX = gFX.fxSpawnActor(FX_32, pSprite->sectnum, x, y, z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(-dx);
yvel[pFX->index] = actor->yvel() + Random2(-dy);
zvel[pFX->index] = actor->zvel() - Random(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(-dx);
pFX->yvel() = actor->yvel() + Random2(-dy);
pFX->zvel() = actor->zvel() - Random(0x1aaaa);
}
}
if (pXSprite->burnTime > 0)
@ -95,9 +95,9 @@ void FlareBurst(DBloodActor* actor, int) // 2
dz >>= 1;
}
RotateVector(&dx, &dy, nAngle);
xvel[pSpawn->index] += dx;
yvel[pSpawn->index] += dy;
zvel[pSpawn->index] += dz;
spawnedactor->xvel() += dx;
spawnedactor->yvel() += dy;
spawnedactor->zvel() += dz;
evPost(spawnedactor, 960, kCallbackRemove);
}
evPost(actor, 0, kCallbackRemove);
@ -107,12 +107,12 @@ void fxFlareSpark(DBloodActor* actor, int) // 3
{
if (!actor) return;
spritetype *pSprite = &actor->s();
spritetype *pFX = gFX.fxSpawn(FX_28, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
auto pFX = gFX.fxSpawnActor(FX_28, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x1aaaa);
yvel[pFX->index] = actor->yvel() + Random2(0x1aaaa);
zvel[pFX->index] = actor->zvel() - Random(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x1aaaa);
pFX->yvel() = actor->yvel() + Random2(0x1aaaa);
pFX->zvel() = actor->zvel() - Random(0x1aaaa);
}
evPost(actor, 4, kCallbackFXFlareSpark);
}
@ -121,12 +121,12 @@ void fxFlareSparkLite(DBloodActor* actor, int) // 4
{
if (!actor) return;
spritetype *pSprite = &actor->s();
spritetype *pFX = gFX.fxSpawn(FX_28, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
auto pFX = gFX.fxSpawnActor(FX_28, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x1aaaa);
yvel[pFX->index] = actor->yvel() + Random2(0x1aaaa);
zvel[pFX->index] = actor->zvel() - Random(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x1aaaa);
pFX->yvel() = actor->yvel() + Random2(0x1aaaa);
pFX->zvel() = actor->zvel() - Random(0x1aaaa);
}
evPost(actor, 12, kCallbackFXFlareSparkLite);
}
@ -140,12 +140,12 @@ void fxZombieBloodSpurt(DBloodActor* actor, int) // 5
XSPRITE *pXSprite = &actor->x();
int top, bottom;
GetSpriteExtents(pSprite, &top, &bottom);
spritetype *pFX = gFX.fxSpawn(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, top, 0);
auto pFX = gFX.fxSpawnActor(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, top, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x11111);
yvel[pFX->index] = actor->yvel() + Random2(0x11111);
zvel[pFX->index] = actor->zvel() - 0x6aaaa;
pFX->xvel() = actor->xvel() + Random2(0x11111);
pFX->yvel() = actor->yvel() + Random2(0x11111);
pFX->zvel() = actor->zvel() - 0x6aaaa;
}
if (pXSprite->data1 > 0)
{
@ -164,13 +164,13 @@ void fxBloodSpurt(DBloodActor* actor, int) // 6
{
if (!actor) return;
spritetype *pSprite = &actor->s();
spritetype *pFX = gFX.fxSpawn(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
auto pFX = gFX.fxSpawnActor(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
pFX->ang = 0;
xvel[pFX->index] = actor->xvel()>>8;
yvel[pFX->index] = actor->yvel()>>8;
zvel[pFX->index] = actor->zvel()>>8;
pFX->s().ang = 0;
pFX->xvel() = actor->xvel()>>8;
pFX->yvel() = actor->yvel()>>8;
pFX->zvel() = actor->zvel()>>8;
}
evPost(actor, 6, kCallbackFXBloodSpurt);
}
@ -180,12 +180,12 @@ void fxArcSpark(DBloodActor* actor, int) // 7
{
if (!actor) return;
spritetype* pSprite = &actor->s();
spritetype* pFX = gFX.fxSpawn(FX_15, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
auto pFX = gFX.fxSpawnActor(FX_15, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x10000);
yvel[pFX->index] = actor->yvel() + Random2(0x10000);
zvel[pFX->index] = actor->zvel() - Random(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x10000);
pFX->yvel() = actor->yvel() + Random2(0x10000);
pFX->zvel() = actor->zvel() - Random(0x1aaaa);
}
evPost(actor, 3, kCallbackFXArcSpark);
}
@ -201,12 +201,12 @@ void fxDynPuff(DBloodActor* actor, int) // 8
int x = pSprite->x + MulScale(nDist, Cos(pSprite->ang-512), 30);
int y = pSprite->y + MulScale(nDist, Sin(pSprite->ang-512), 30);
int z = pSprite->z;
spritetype *pFX = gFX.fxSpawn(FX_7, pSprite->sectnum, x, y, z, 0);
auto pFX = gFX.fxSpawnActor(FX_7, pSprite->sectnum, x, y, z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel();
yvel[pFX->index] = actor->yvel();
zvel[pFX->index] = actor->zvel();
pFX->xvel() = actor->xvel();
pFX->yvel() = actor->yvel();
pFX->zvel() = actor->zvel();
}
}
evPost(actor, 12, kCallbackFXDynPuff);
@ -290,7 +290,7 @@ void Respawn(DBloodActor* actor, int) // 9
pSprite->cstat &= (unsigned short)~CSTAT_SPRITE_INVISIBLE;
}
gFX.fxSpawn(FX_29, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
gFX.fxSpawnActor(FX_29, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
sfxPlay3DSound(pSprite, 350, -1, 0);
break;
}
@ -316,12 +316,12 @@ void PlayerBubble(DBloodActor* actor, int) // 10
int x = pSprite->x + MulScale(nDist, Cos(nAngle), 30);
int y = pSprite->y + MulScale(nDist, Sin(nAngle), 30);
int z = bottom-Random(bottom-top);
spritetype *pFX = gFX.fxSpawn((FX_ID)(FX_23+Random(3)), pSprite->sectnum, x, y, z, 0);
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23+Random(3)), pSprite->sectnum, x, y, z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x1aaaa);
yvel[pFX->index] = actor->yvel() + Random2(0x1aaaa);
zvel[pFX->index] = actor->zvel() + Random2(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x1aaaa);
pFX->yvel() = actor->yvel() + Random2(0x1aaaa);
pFX->zvel() = actor->zvel() + Random2(0x1aaaa);
}
}
evPost(actor, 4, kCallbackPlayerBubble);
@ -341,12 +341,12 @@ void EnemyBubble(DBloodActor* actor, int) // 11
int x = pSprite->x + MulScale(nDist, Cos(nAngle), 30);
int y = pSprite->y + MulScale(nDist, Sin(nAngle), 30);
int z = bottom-Random(bottom-top);
spritetype *pFX = gFX.fxSpawn((FX_ID)(FX_23+Random(3)), pSprite->sectnum, x, y, z, 0);
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23+Random(3)), pSprite->sectnum, x, y, z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x1aaaa);
yvel[pFX->index] = actor->yvel() + Random2(0x1aaaa);
zvel[pFX->index] = actor->zvel() + Random2(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x1aaaa);
pFX->yvel() = actor->yvel() + Random2(0x1aaaa);
pFX->zvel() = actor->zvel() + Random2(0x1aaaa);
}
}
evPost(actor, 4, kCallbackEnemeyBubble);
@ -403,7 +403,7 @@ void fxBloodBits(DBloodActor* actor, int) // 14
int nDist = Random(16)<<4;
int x = pSprite->x+MulScale(nDist, Cos(nAngle), 28);
int y = pSprite->y+MulScale(nDist, Sin(nAngle), 28);
gFX.fxSpawn(FX_48, pSprite->sectnum, x, y, pSprite->z, 0);
gFX.fxSpawnActor(FX_48, pSprite->sectnum, x, y, pSprite->z, 0);
if (pSprite->ang == 1024)
{
int nChannel = 28+(pSprite->index&2);
@ -412,9 +412,9 @@ void fxBloodBits(DBloodActor* actor, int) // 14
}
if (Chance(0x5000))
{
spritetype *pFX = gFX.fxSpawn(FX_36, pSprite->sectnum, x, y, floorZ-64, 0);
auto pFX = gFX.fxSpawnActor(FX_36, pSprite->sectnum, x, y, floorZ-64, 0);
if (pFX)
pFX->ang = nAngle;
pFX->s().ang = nAngle;
}
gFX.remove(actor->s().index);
}
@ -424,12 +424,12 @@ void fxTeslaAlt(DBloodActor* actor, int) // 15
{
if (!actor) return;
spritetype* pSprite = &actor->s();
spritetype* pFX = gFX.fxSpawn(FX_49, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
auto pFX = gFX.fxSpawnActor(FX_49, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
xvel[pFX->index] = actor->xvel() + Random2(0x1aaaa);
yvel[pFX->index] = actor->yvel() + Random2(0x1aaaa);
zvel[pFX->index] = actor->zvel() - Random(0x1aaaa);
pFX->xvel() = actor->xvel() + Random2(0x1aaaa);
pFX->yvel() = actor->yvel() + Random2(0x1aaaa);
pFX->zvel() = actor->zvel() - Random(0x1aaaa);
}
evPost(actor, 3, kCallbackFXTeslaAlt);
}
@ -527,17 +527,17 @@ void fxPodBloodSpray(DBloodActor* actor, int) // 18
{
if (!actor) return;
spritetype* pSprite = &actor->s();
spritetype* pFX;
DBloodActor* pFX;
if (pSprite->type == 53)
pFX = gFX.fxSpawn(FX_53, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
pFX = gFX.fxSpawnActor(FX_53, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
else
pFX = gFX.fxSpawn(FX_54, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
pFX = gFX.fxSpawnActor(FX_54, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pFX)
{
pFX->ang = 0;
xvel[pFX->index] = actor->xvel() >> 8;
yvel[pFX->index] = actor->yvel() >> 8;
zvel[pFX->index] = actor->zvel() >> 8;
pFX->s().ang = 0;
pFX->xvel() = actor->xvel() >> 8;
pFX->yvel() = actor->yvel() >> 8;
pFX->zvel() = actor->zvel() >> 8;
}
evPost(actor, 6, kCallbackFXPodBloodSpray);
}
@ -561,19 +561,19 @@ void fxPodBloodSplat(DBloodActor* actor, int) // 19
assert(nChannel < 32);
sfxPlay3DSound(pSprite, 385, nChannel, 1);
}
spritetype *pFX = NULL;
DBloodActor *pFX = NULL;
if (pSprite->type == 53 || pSprite->type == kThingPodGreenBall)
{
if (Chance(0x500) || pSprite->type == kThingPodGreenBall)
pFX = gFX.fxSpawn(FX_55, pSprite->sectnum, x, y, floorZ-64, 0);
pFX = gFX.fxSpawnActor(FX_55, pSprite->sectnum, x, y, floorZ-64, 0);
if (pFX)
pFX->ang = nAngle;
pFX->s().ang = nAngle;
}
else
{
pFX = gFX.fxSpawn(FX_32, pSprite->sectnum, x, y, floorZ-64, 0);
pFX = gFX.fxSpawnActor(FX_32, pSprite->sectnum, x, y, floorZ-64, 0);
if (pFX)
pFX->ang = nAngle;
pFX->s().ang = nAngle;
}
gFX.remove(actor->s().index);
}

View file

@ -272,11 +272,10 @@ void fxSpawnBlood(spritetype *pSprite, int )
return;
if (adult_lockout && gGameOptions.nGameType <= 0)
return;
spritetype *pBlood = gFX.fxSpawn(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pBlood)
auto bloodactor = gFX.fxSpawnActor(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (bloodactor)
{
auto bloodactor = &bloodActors[pBlood->index];
pBlood->ang = 1024;
bloodactor->s().ang = 1024;
bloodactor->xvel() = Random2(0x6aaaa);
bloodactor->yvel() = Random2(0x6aaaa);
bloodactor->zvel() = -(int)Random(0x10aaaa)-100;
@ -293,15 +292,14 @@ void sub_746D4(spritetype *pSprite, int )
return;
if (adult_lockout && gGameOptions.nGameType <= 0)
return;
spritetype *pSpawn;
DBloodActor *spawnactor;
if (pSprite->type == kDudePodGreen)
pSpawn = gFX.fxSpawn(FX_53, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
spawnactor = gFX.fxSpawnActor(FX_53, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
else
pSpawn = gFX.fxSpawn(FX_54, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (pSpawn)
spawnactor = gFX.fxSpawnActor(FX_54, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0);
if (spawnactor)
{
auto spawnactor = &bloodActors[pSpawn->index];
pSpawn->ang = 1024;
spawnactor->s().ang = 1024;
spawnactor->xvel() = Random2(0x6aaaa);
spawnactor->yvel() = Random2(0x6aaaa);
spawnactor->zvel() = -(int)Random(0x10aaaa)-100;
@ -315,16 +313,16 @@ void fxSpawnEjectingBrass(spritetype *pSprite, int z, int a3, int a4)
int y = pSprite->y+MulScale(pSprite->clipdist-4, Sin(pSprite->ang), 28);
x += MulScale(a3, Cos(pSprite->ang+512), 30);
y += MulScale(a3, Sin(pSprite->ang+512), 30);
spritetype *pBrass = gFX.fxSpawn((FX_ID)(FX_37+Random(3)), pSprite->sectnum, x, y, z, 0);
auto pBrass = gFX.fxSpawnActor((FX_ID)(FX_37+Random(3)), pSprite->sectnum, x, y, z, 0);
if (pBrass)
{
if (!VanillaMode())
pBrass->ang = Random(2047);
pBrass->s().ang = Random(2047);
int nDist = (a4<<18)/120+Random2(((a4/4)<<18)/120);
int nAngle = pSprite->ang+Random2(56)+512;
xvel[pBrass->index] = MulScale(nDist, Cos(nAngle), 30);
yvel[pBrass->index] = MulScale(nDist, Sin(nAngle), 30);
zvel[pBrass->index] = zvel[pSprite->index]-(0x20000+(Random2(40)<<18)/120);
pBrass->xvel() = MulScale(nDist, Cos(nAngle), 30);
pBrass->yvel() = MulScale(nDist, Sin(nAngle), 30);
pBrass->zvel() = zvel[pSprite->index]-(0x20000+(Random2(40)<<18)/120);
}
}
@ -334,16 +332,16 @@ void fxSpawnEjectingShell(spritetype *pSprite, int z, int a3, int a4)
int y = pSprite->y+MulScale(pSprite->clipdist-4, Sin(pSprite->ang), 28);
x += MulScale(a3, Cos(pSprite->ang+512), 30);
y += MulScale(a3, Sin(pSprite->ang+512), 30);
spritetype *pShell = gFX.fxSpawn((FX_ID)(FX_40+Random(3)), pSprite->sectnum, x, y, z, 0);
auto pShell = gFX.fxSpawnActor((FX_ID)(FX_40+Random(3)), pSprite->sectnum, x, y, z, 0);
if (pShell)
{
if (!VanillaMode())
pShell->ang = Random(2047);
pShell->s().ang = Random(2047);
int nDist = (a4<<18)/120+Random2(((a4/4)<<18)/120);
int nAngle = pSprite->ang+Random2(56)+512;
xvel[pShell->index] = MulScale(nDist, Cos(nAngle), 30);
yvel[pShell->index] = MulScale(nDist, Sin(nAngle), 30);
zvel[pShell->index] = zvel[pSprite->index]-(0x20000+(Random2(20)<<18)/120);
pShell->xvel() = MulScale(nDist, Cos(nAngle), 30);
pShell->yvel() = MulScale(nDist, Sin(nAngle), 30);
pShell->zvel() = zvel[pSprite->index]-(0x20000+(Random2(20)<<18)/120);
}
}

View file

@ -307,41 +307,41 @@ void GibFX(spritetype *pSprite, GIBFX *pGFX, CGibPosition *pPos, CGibVelocity *p
gPos.y = pSprite->y+MulScale(pSprite->clipdist<<2, Sin(nAngle), 30);
gPos.z = bottom-Random(bottom-top);
}
spritetype *pFX = gFX.fxSpawn(pGFX->fxId, nSector, gPos.x, gPos.y, gPos.z, 0);
auto pFX = gFX.fxSpawnActor(pGFX->fxId, nSector, gPos.x, gPos.y, gPos.z, 0);
if (pFX)
{
if (pGFX->at1 < 0)
pFX->pal = pSprite->pal;
pFX->s().pal = pSprite->pal;
if (pVel)
{
xvel[pFX->index] = pVel->vx+Random2(pGFX->atd);
yvel[pFX->index] = pVel->vy+Random2(pGFX->atd);
zvel[pFX->index] = pVel->vz-Random(pGFX->at11);
pFX->xvel() = pVel->vx+Random2(pGFX->atd);
pFX->yvel() = pVel->vy+Random2(pGFX->atd);
pFX->zvel() = pVel->vz-Random(pGFX->at11);
}
else
{
xvel[pFX->index] = Random2((pGFX->atd<<18)/120);
yvel[pFX->index] = Random2((pGFX->atd<<18)/120);
pFX->xvel() = Random2((pGFX->atd<<18)/120);
pFX->yvel() = Random2((pGFX->atd<<18)/120);
switch(pSprite->cstat&48)
{
case 16:
zvel[pFX->index] = Random2((pGFX->at11<<18)/120);
pFX->zvel() = Random2((pGFX->at11<<18)/120);
break;
default:
if (dz2 < dz1 && dz2 < 0x4000)
{
zvel[pFX->index] = 0;
pFX->zvel() = 0;
}
else if (dz2 > dz1 && dz1 < 0x4000)
{
zvel[pFX->index] = -(int)Random((abs(pGFX->at11)<<18)/120);
pFX->zvel() = -(int)Random((abs(pGFX->at11)<<18)/120);
}
else
{
if ((pGFX->at11<<18)/120 < 0)
zvel[pFX->index] = -(int)Random((abs(pGFX->at11)<<18)/120);
pFX->zvel() = -(int)Random((abs(pGFX->at11)<<18)/120);
else
zvel[pFX->index] = Random2((pGFX->at11<<18)/120);
pFX->zvel() = Random2((pGFX->at11<<18)/120);
}
break;
}
@ -452,22 +452,22 @@ void GibFX(int nWall, GIBFX * pGFX, int a3, int a4, int a5, int a6, CGibVelocity
int r1 = Random(a6);
int r2 = Random(a5);
int r3 = Random(a4);
spritetype *pGib = gFX.fxSpawn(pGFX->fxId, nSector, pWall->x+r3, pWall->y+r2, a3+r1, 0);
auto pGib = gFX.fxSpawnActor(pGFX->fxId, nSector, pWall->x+r3, pWall->y+r2, a3+r1, 0);
if (pGib)
{
if (pGFX->at1 < 0)
pGib->pal = pWall->pal;
pGib->s().pal = pWall->pal;
if (!pVel)
{
xvel[pGib->index] = Random2((pGFX->atd<<18)/120);
yvel[pGib->index] = Random2((pGFX->atd<<18)/120);
zvel[pGib->index] = -(int)Random((pGFX->at11<<18)/120);
pGib->xvel() = Random2((pGFX->atd<<18)/120);
pGib->yvel() = Random2((pGFX->atd<<18)/120);
pGib->zvel() = -(int)Random((pGFX->at11<<18)/120);
}
else
{
xvel[pGib->index] = Random2((pVel->vx<<18)/120);
yvel[pGib->index] = Random2((pVel->vy<<18)/120);
zvel[pGib->index] = -(int)Random((pVel->vz<<18)/120);
pGib->xvel() = Random2((pVel->vx << 18) / 120);
pGib->yvel() = Random2((pVel->vy << 18) / 120);
pGib->zvel() = -(int)Random((pVel->vz<<18)/120);
}
}
}

View file

@ -1534,11 +1534,11 @@ void debrisBubble(int nSprite)
int x = pSprite->x + MulScale(nDist, Cos(nAngle), 30);
int y = pSprite->y + MulScale(nDist, Sin(nAngle), 30);
int z = bottom - Random(bottom - top);
spritetype* pFX = gFX.fxSpawn((FX_ID)(FX_23 + Random(3)), pSprite->sectnum, x, y, z, 0);
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), pSprite->sectnum, x, y, z, 0);
if (pFX) {
xvel[pFX->index] = xvel[nSprite] + Random2(0x1aaaa);
yvel[pFX->index] = yvel[nSprite] + Random2(0x1aaaa);
zvel[pFX->index] = zvel[nSprite] + Random2(0x1aaaa);
pFX->xvel() = xvel[nSprite] + Random2(0x1aaaa);
pFX->yvel() = yvel[nSprite] + Random2(0x1aaaa);
pFX->zvel() = zvel[nSprite] + Random2(0x1aaaa);
}
}
@ -1696,19 +1696,19 @@ void debrisMove(int listIndex)
}
moveHit = floorHit;
spritetype* pFX = NULL; spritetype* pFX2 = NULL;
DBloodActor* pFX = NULL, *pFX2 = NULL;
switch (tileGetSurfType(floorHit)) {
case kSurfLava:
if ((pFX = gFX.fxSpawn(FX_10, pSprite->sectnum, pSprite->x, pSprite->y, floorZ, 0)) == NULL) break;
if ((pFX = gFX.fxSpawnActor(FX_10, pSprite->sectnum, pSprite->x, pSprite->y, floorZ, 0)) == NULL) break;
for (i = 0; i < 7; i++) {
if ((pFX2 = gFX.fxSpawn(FX_14, pFX->sectnum, pFX->x, pFX->y, pFX->z, 0)) == NULL) continue;
xvel[pFX2->index] = Random2(0x6aaaa);
yvel[pFX2->index] = Random2(0x6aaaa);
zvel[pFX2->index] = -(int)Random(0xd5555);
if ((pFX2 = gFX.fxSpawnActor(FX_14, pFX->s().sectnum, pFX->s().x, pFX->s().y, pFX->s().z, 0)) == NULL) continue;
pFX2->xvel() = Random2(0x6aaaa);
pFX2->yvel() = Random2(0x6aaaa);
pFX2->zvel() = -(int)Random(0xd5555);
}
break;
case kSurfWater:
gFX.fxSpawn(FX_9, pSprite->sectnum, pSprite->x, pSprite->y, floorZ, 0);
gFX.fxSpawnActor(FX_9, pSprite->sectnum, pSprite->x, pSprite->y, floorZ, 0);
break;
}
@ -2813,7 +2813,7 @@ void useEffectGen(XSPRITE* pXSource, spritetype* pSprite) {
} else if (valueIsBetween(fxId, 0, kFXMax)) {
int pos, top, bottom; GetSpriteExtents(pSprite, &top, &bottom);
spritetype* pEffect = NULL;
DBloodActor* pEffect = nullptr;
// select where exactly effect should be spawned
switch (pXSource->data4) {
@ -2833,27 +2833,28 @@ void useEffectGen(XSPRITE* pXSource, spritetype* pSprite) {
break;
}
if ((pEffect = gFX.fxSpawn((FX_ID)fxId, pSprite->sectnum, pSprite->x, pSprite->y, pos, 0)) != NULL) {
if ((pEffect = gFX.fxSpawnActor((FX_ID)fxId, pSprite->sectnum, pSprite->x, pSprite->y, pos, 0)) != NULL) {
pEffect->owner = pSource->index;
auto pEffectSpr = &pEffect->s();
pEffectSpr->owner = pSource->index;
if (pSource->flags & kModernTypeFlag1) {
pEffect->pal = pSource->pal;
pEffect->xoffset = pSource->xoffset;
pEffect->yoffset = pSource->yoffset;
pEffect->xrepeat = pSource->xrepeat;
pEffect->yrepeat = pSource->yrepeat;
pEffect->shade = pSource->shade;
pEffectSpr->pal = pSource->pal;
pEffectSpr->xoffset = pSource->xoffset;
pEffectSpr->yoffset = pSource->yoffset;
pEffectSpr->xrepeat = pSource->xrepeat;
pEffectSpr->yrepeat = pSource->yrepeat;
pEffectSpr->shade = pSource->shade;
}
if (pSource->flags & kModernTypeFlag2) {
pEffect->cstat = pSource->cstat;
if (pEffect->cstat & CSTAT_SPRITE_INVISIBLE)
pEffect->cstat &= ~CSTAT_SPRITE_INVISIBLE;
pEffectSpr->cstat = pSource->cstat;
if (pEffectSpr->cstat & CSTAT_SPRITE_INVISIBLE)
pEffectSpr->cstat &= ~CSTAT_SPRITE_INVISIBLE;
}
if (pEffect->cstat & CSTAT_SPRITE_ONE_SIDED)
pEffect->cstat &= ~CSTAT_SPRITE_ONE_SIDED;
if (pEffectSpr->cstat & CSTAT_SPRITE_ONE_SIDED)
pEffectSpr->cstat &= ~CSTAT_SPRITE_ONE_SIDED;
}
}
@ -5465,7 +5466,7 @@ void useRandomItemGen(spritetype* pSource, XSPRITE* pXSource) {
{
spritetype* pItem = &sprite[nItem];
if ((unsigned int)pItem->type == pXSource->dropMsg && pItem->x == pSource->x && pItem->y == pSource->y && pItem->z == pSource->z) {
gFX.fxSpawn((FX_ID)29, pSource->sectnum, pSource->x, pSource->y, pSource->z, 0);
gFX.fxSpawnActor((FX_ID)29, pSource->sectnum, pSource->x, pSource->y, pSource->z, 0);
pItem->type = kSpriteDecoration;
actPostSprite(nItem, kStatFree);
break;

View file

@ -2247,7 +2247,7 @@ void ActivateGenerator(int nSprite)
case kGenBubbleMulti: {
int top, bottom;
GetSpriteExtents(pSprite, &top, &bottom);
gFX.fxSpawn((pSprite->type == kGenBubble) ? FX_23 : FX_26, pSprite->sectnum, pSprite->x, pSprite->y, top, 0);
gFX.fxSpawnActor((pSprite->type == kGenBubble) ? FX_23 : FX_26, pSprite->sectnum, pSprite->x, pSprite->y, top, 0);
break;
}
}