- fixed fxSpawnActor calls

This commit is contained in:
Christoph Oelckers 2022-09-29 15:13:19 +02:00
parent d41e370aad
commit a5afbce59d
9 changed files with 60 additions and 52 deletions

View file

@ -111,15 +111,23 @@ void setVideoMode();
class F2DDrawer; class F2DDrawer;
void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz, void getzrange_(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz,
CollisionBase& florhit, int32_t walldist, uint32_t cliptype); CollisionBase& florhit, int32_t walldist, uint32_t cliptype);
[[deprecated]]
inline void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz,
CollisionBase& florhit, int32_t walldist, uint32_t cliptype)
{
getzrange_(pos, sect, ceilz, ceilhit, florz, florhit, walldist, cliptype);
}
[[deprecated]]
inline void getzrange(const vec3_t& pos, sectortype* sect, double* ceilz, CollisionBase& ceilhit, double* florz, inline void getzrange(const vec3_t& pos, sectortype* sect, double* ceilz, CollisionBase& ceilhit, double* florz,
CollisionBase& florhit, int32_t walldist, uint32_t cliptype) CollisionBase& florhit, int32_t walldist, uint32_t cliptype)
{ {
int c = int(*ceilz * zworldtoint); int c = int(*ceilz * zworldtoint);
int f = int(*florz * zworldtoint); int f = int(*florz * zworldtoint);
getzrange(pos, sect, &c, ceilhit, &f, florhit, walldist, cliptype); getzrange_(pos, sect, &c, ceilhit, &f, florhit, walldist, cliptype);
*ceilz = c * zinttoworld; *ceilz = c * zinttoworld;
*florz = f * zinttoworld; *florz = f * zinttoworld;
} }
@ -131,7 +139,7 @@ inline void getzrange(const DVector3& pos, sectortype* sect, double* ceilz, Coll
int c = int(*ceilz * zworldtoint); int c = int(*ceilz * zworldtoint);
int f = int(*florz * zworldtoint); int f = int(*florz * zworldtoint);
getzrange(ipos, sect, &c, ceilhit, &f, florhit, walldist, cliptype); getzrange_(ipos, sect, &c, ceilhit, &f, florhit, walldist, cliptype);
*ceilz = c * zinttoworld; *ceilz = c * zinttoworld;
*florz = f * zinttoworld; *florz = f * zinttoworld;
} }

View file

@ -887,7 +887,7 @@ int pushmove_(vec3_t *const vect, int *const sectnum,
// getzrange // getzrange
// //
void getzrange(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz, CollisionBase& florhit, int32_t walldist, uint32_t cliptype) void getzrange_(const vec3_t& pos, sectortype* sect, int32_t* ceilz, CollisionBase& ceilhit, int32_t* florz, CollisionBase& florhit, int32_t walldist, uint32_t cliptype)
{ {
if (sect == nullptr) if (sect == nullptr)
{ {

View file

@ -3857,7 +3857,7 @@ static void actImpactMissile(DBloodActor* missileActor, int hitCode)
case 4: case 4:
if (pWallHit) if (pWallHit)
{ {
auto pFX = gFX.fxSpawnActor(FX_52, missileActor->sector(), missileActor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_52, missileActor->sector(), missileActor->spr.pos);
if (pFX) pFX->spr.angle = (pWallHit->delta().Angle() + DAngle90).Normalized360(); if (pFX) pFX->spr.angle = (pWallHit->delta().Angle() + DAngle90).Normalized360();
} }
break; break;
@ -4560,7 +4560,7 @@ static Collision MoveThing(DBloodActor* actor)
actor->vel.Z += FixedToFloat(58254); actor->vel.Z += FixedToFloat(58254);
if (actor->spr.type == kThingZombieHead) if (actor->spr.type == kThingZombieHead)
{ {
auto* fxActor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos, nullAngle); auto* fxActor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos);
if (fxActor) if (fxActor)
{ {
auto vect1 = DVector2(64./15., 0.).Rotated(DAngle::fromBuild((PlayClock * 11) & 2047)); auto vect1 = DVector2(64./15., 0.).Rotated(DAngle::fromBuild((PlayClock * 11) & 2047));
@ -5095,16 +5095,16 @@ void MoveDude(DBloodActor* actor)
switch (tileGetSurfType(floorColl)) switch (tileGetSurfType(floorColl))
{ {
case kSurfWater: case kSurfWater:
gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos, floorZ), 0); gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos, floorZ));
break; break;
case kSurfLava: case kSurfLava:
{ {
auto pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos, floorZ), 0); auto pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos, floorZ));
if (pFX) if (pFX)
{ {
for (int i = 0; i < 7; i++) for (int i = 0; i < 7; i++)
{ {
auto pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos, 0); auto pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos);
if (pFX2) if (pFX2)
{ {
pFX2->vel.X = Random2F(0x6aaaa); pFX2->vel.X = Random2F(0x6aaaa);
@ -5899,7 +5899,7 @@ static void actCheckTraps()
auto vec = actor->spr.angle.ToVector() * t; auto vec = actor->spr.angle.ToVector() * t;
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), pos, 0); auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), pos);
if (pFX) if (pFX)
{ {
pFX->vel.X = vec.X + Random2F(0x8888); pFX->vel.X = vec.X + Random2F(0x8888);
@ -6665,7 +6665,7 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
assert(nnSurf < kSurfMax); assert(nnSurf < kSurfMax);
if (pVectorData->surfHit[nnSurf].fx1 >= 0) if (pVectorData->surfHit[nnSurf].fx1 >= 0)
{ {
auto pFX = gFX.fxSpawnActor(pVectorData->surfHit[nnSurf].fx1, pSector, ppos, 0); auto pFX = gFX.fxSpawnActor(pVectorData->surfHit[nnSurf].fx1, pSector, ppos);
if (pFX) if (pFX)
{ {
pFX->spr.angle = pWall->normalAngle(); pFX->spr.angle = pWall->normalAngle();
@ -6760,8 +6760,8 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
FX_ID t3 = pVectorData1->surfHit[nnSurf].fx3; FX_ID t3 = pVectorData1->surfHit[nnSurf].fx3;
DBloodActor* pFX = nullptr; DBloodActor* pFX = nullptr;
if (t2 > FX_NONE && (t3 == FX_NONE || Chance(0x4000))) pFX = gFX.fxSpawnActor(t2, pSector1, ppos, 0); if (t2 > FX_NONE && (t3 == FX_NONE || Chance(0x4000))) pFX = gFX.fxSpawnActor(t2, pSector1, ppos);
else if (t3 > FX_NONE) pFX = gFX.fxSpawnActor(t3, pSector1, ppos, 0); else if (t3 > FX_NONE) pFX = gFX.fxSpawnActor(t3, pSector1, ppos);
if (pFX) if (pFX)
{ {
pFX->vel.Z = FixedToFloat(0x2222); pFX->vel.Z = FixedToFloat(0x2222);
@ -6815,14 +6815,14 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
if (pVectorData->surfHit[nSurf].fx2 >= 0) { if (pVectorData->surfHit[nSurf].fx2 >= 0) {
auto pFX2 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, pSector, pos, 0); auto pFX2 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, pSector, pos);
if (pFX2 && gModernMap) if (pFX2 && gModernMap)
pFX2->SetOwner(shooter); pFX2->SetOwner(shooter);
} }
if (pVectorData->surfHit[nSurf].fx3 >= 0) { if (pVectorData->surfHit[nSurf].fx3 >= 0) {
auto pFX3 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, pSector, pos, 0); auto pFX3 = gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, pSector, pos);
if (pFX3 && gModernMap) if (pFX3 && gModernMap)
pFX3->SetOwner(shooter); pFX3->SetOwner(shooter);
@ -6830,9 +6830,9 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
#else #else
if (pVectorData->surfHit[nSurf].fx2 >= 0) if (pVectorData->surfHit[nSurf].fx2 >= 0)
gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, pSector, pos, 0); gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx2, pSector, pos);
if (pVectorData->surfHit[nSurf].fx3 >= 0) if (pVectorData->surfHit[nSurf].fx3 >= 0)
gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, pSector, pos, 0); gFX.fxSpawnActor(pVectorData->surfHit[nSurf].fx3, pSector, pos);
#endif #endif
if (pVectorData->surfHit[nSurf].fxSnd >= 0) if (pVectorData->surfHit[nSurf].fxSnd >= 0)
@ -6847,7 +6847,7 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
void FireballSeqCallback(int, DBloodActor* actor) void FireballSeqCallback(int, DBloodActor* actor)
{ {
auto pFX = gFX.fxSpawnActor(FX_11, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_11, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel = actor->vel; pFX->vel = actor->vel;
@ -6856,7 +6856,7 @@ void FireballSeqCallback(int, DBloodActor* actor)
void NapalmSeqCallback(int, DBloodActor* actor) void NapalmSeqCallback(int, DBloodActor* actor)
{ {
auto pFX = gFX.fxSpawnActor(FX_12, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_12, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel = actor->vel; pFX->vel = actor->vel;
@ -6865,7 +6865,7 @@ void NapalmSeqCallback(int, DBloodActor* actor)
void Fx32Callback(int, DBloodActor* actor) void Fx32Callback(int, DBloodActor* actor)
{ {
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel = actor->vel; pFX->vel = actor->vel;
@ -6874,7 +6874,7 @@ void Fx32Callback(int, DBloodActor* actor)
void Fx33Callback(int, DBloodActor* actor) void Fx33Callback(int, DBloodActor* actor)
{ {
auto pFX = gFX.fxSpawnActor(FX_33, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_33, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel = actor->vel; pFX->vel = actor->vel;

View file

@ -49,7 +49,7 @@ void fxFlameLick(DBloodActor* actor, sectortype*) // 0
DVector2 pos = actor->spr.pos.XY() + dv; DVector2 pos = actor->spr.pos.XY() + dv;
double z = bottom - RandomD(bottom - top, 8); double z = bottom - RandomD(bottom - top, 8);
auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), DVector3(pos, z), 0); auto pFX = gFX.fxSpawnActor(FX_32, actor->sector(), DVector3(pos, z));
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(-int(16 * dv.X)); pFX->vel.X = actor->vel.X + Random2F(-int(16 * dv.X));
@ -114,7 +114,7 @@ void FlareBurst(DBloodActor* actor, sectortype*) // 2
void fxFlareSpark(DBloodActor* actor, sectortype*) // 3 void fxFlareSpark(DBloodActor* actor, sectortype*) // 3
{ {
if (!actor) return; if (!actor) return;
auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x1aaaa); pFX->vel.X = actor->vel.X + Random2F(0x1aaaa);
@ -133,7 +133,7 @@ void fxFlareSpark(DBloodActor* actor, sectortype*) // 3
void fxFlareSparkLite(DBloodActor* actor, sectortype*) // 4 void fxFlareSparkLite(DBloodActor* actor, sectortype*) // 4
{ {
if (!actor) return; if (!actor) return;
auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_28, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x1aaaa); pFX->vel.X = actor->vel.X + Random2F(0x1aaaa);
@ -155,7 +155,7 @@ void fxZombieBloodSpurt(DBloodActor* actor, sectortype*) // 5
assert(actor->hasX()); assert(actor->hasX());
double top, bottom; double top, bottom;
GetActorExtents(actor, &top, &bottom); GetActorExtents(actor, &top, &bottom);
auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), DVector3(actor->spr.pos.XY(), top), 0); auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), DVector3(actor->spr.pos.XY(), top));
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x11111); pFX->vel.X = actor->vel.X + Random2F(0x11111);
@ -184,7 +184,7 @@ void fxZombieBloodSpurt(DBloodActor* actor, sectortype*) // 5
void fxBloodSpurt(DBloodActor* actor, sectortype*) // 6 void fxBloodSpurt(DBloodActor* actor, sectortype*) // 6
{ {
if (!actor) return; if (!actor) return;
auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->spr.angle = nullAngle; pFX->spr.angle = nullAngle;
@ -202,7 +202,7 @@ void fxBloodSpurt(DBloodActor* actor, sectortype*) // 6
void fxArcSpark(DBloodActor* actor, sectortype*) // 7 void fxArcSpark(DBloodActor* actor, sectortype*) // 7
{ {
if (!actor) return; if (!actor) return;
auto pFX = gFX.fxSpawnActor(FX_15, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_15, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x10000); pFX->vel.X = actor->vel.X + Random2F(0x10000);
@ -225,7 +225,7 @@ void fxDynPuff(DBloodActor* actor, sectortype*) // 8
{ {
double nDist = (actor->spr.xrepeat * tileWidth(actor->spr.picnum)) * (REPEAT_SCALE / 2); double nDist = (actor->spr.xrepeat * tileWidth(actor->spr.picnum)) * (REPEAT_SCALE / 2);
DVector3 pos = actor->spr.pos + (actor->spr.angle - DAngle90).ToVector() * nDist; DVector3 pos = actor->spr.pos + (actor->spr.angle - DAngle90).ToVector() * nDist;
auto pFX = gFX.fxSpawnActor(FX_7, actor->sector(), pos, 0); auto pFX = gFX.fxSpawnActor(FX_7, actor->sector(), pos);
if (pFX) if (pFX)
{ {
pFX->vel = actor->vel; pFX->vel = actor->vel;
@ -317,7 +317,7 @@ void Respawn(DBloodActor* actor, sectortype*) // 9
actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE; actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE;
} }
gFX.fxSpawnActor(FX_29, actor->sector(), actor->spr.pos, 0); gFX.fxSpawnActor(FX_29, actor->sector(), actor->spr.pos);
sfxPlay3DSound(actor, 350, -1, 0); sfxPlay3DSound(actor, 350, -1, 0);
break; break;
} }
@ -345,7 +345,7 @@ void PlayerBubble(DBloodActor* actor, sectortype*) // 10
double nDist = (actor->spr.xrepeat * tileWidth(actor->spr.picnum)) * (REPEAT_SCALE / 2); double nDist = (actor->spr.xrepeat * tileWidth(actor->spr.picnum)) * (REPEAT_SCALE / 2);
DVector2 pos = actor->spr.pos.XY() + actor->spr.angle.ToVector() * nDist; DVector2 pos = actor->spr.pos.XY() + actor->spr.angle.ToVector() * nDist;
double z = bottom - RandomD(bottom - top, 8); double z = bottom - RandomD(bottom - top, 8);
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), DVector3(pos, z), 0); auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), DVector3(pos, z));
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x1aaaa); pFX->vel.X = actor->vel.X + Random2F(0x1aaaa);
@ -375,7 +375,7 @@ void EnemyBubble(DBloodActor* actor, sectortype*) // 11
DVector2 pos = actor->spr.pos.XY() + nAngle.ToVector() * nDist; DVector2 pos = actor->spr.pos.XY() + nAngle.ToVector() * nDist;
double z = bottom - RandomD(bottom - top, 8); double z = bottom - RandomD(bottom - top, 8);
auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), DVector3(pos, z), 0); auto pFX = gFX.fxSpawnActor((FX_ID)(FX_23 + Random(3)), actor->sector(), DVector3(pos, z));
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x1aaaa); pFX->vel.X = actor->vel.X + Random2F(0x1aaaa);
@ -446,7 +446,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
DAngle nAngle = RandomAngle(); DAngle nAngle = RandomAngle();
int nDist = Random(16); int nDist = Random(16);
auto pos = nAngle.ToVector() * nDist * 4; auto pos = nAngle.ToVector() * nDist * 4;
gFX.fxSpawnActor(FX_48, actor->sector(), DVector3(pos, actor->spr.pos.Z), 0); gFX.fxSpawnActor(FX_48, actor->sector(), DVector3(pos, actor->spr.pos.Z));
if (actor->spr.angle == DAngle180) if (actor->spr.angle == DAngle180)
{ {
int nChannel = 28 + (actor->GetIndex() & 2); // this is a little stupid... int nChannel = 28 + (actor->GetIndex() & 2); // this is a little stupid...
@ -454,7 +454,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
} }
if (Chance(0x5000)) if (Chance(0x5000))
{ {
auto pFX = gFX.fxSpawnActor(FX_36, actor->sector(), DVector3(pos, floorZ - 0.25), 0); auto pFX = gFX.fxSpawnActor(FX_36, actor->sector(), DVector3(pos, floorZ - 0.25));
if (pFX) if (pFX)
pFX->spr.angle = nAngle; pFX->spr.angle = nAngle;
} }
@ -471,7 +471,7 @@ void fxBloodBits(DBloodActor* actor, sectortype*) // 14
void fxTeslaAlt(DBloodActor* actor, sectortype*) // 15 void fxTeslaAlt(DBloodActor* actor, sectortype*) // 15
{ {
if (!actor) return; if (!actor) return;
auto pFX = gFX.fxSpawnActor(FX_49, actor->sector(), actor->spr.pos, 0); auto pFX = gFX.fxSpawnActor(FX_49, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->vel.X = actor->vel.X + Random2F(0x1aaaa); pFX->vel.X = actor->vel.X + Random2F(0x1aaaa);
@ -606,9 +606,9 @@ void fxPodBloodSpray(DBloodActor* actor, sectortype*) // 18
if (!actor) return; if (!actor) return;
DBloodActor* pFX; DBloodActor* pFX;
if (actor->spr.type == 53) if (actor->spr.type == 53)
pFX = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos, 0); pFX = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos);
else else
pFX = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos, 0); pFX = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos);
if (pFX) if (pFX)
{ {
pFX->spr.angle = nullAngle; pFX->spr.angle = nullAngle;
@ -647,13 +647,13 @@ void fxPodBloodSplat(DBloodActor* actor, sectortype*) // 19
if (actor->spr.type == 53 || actor->spr.type == kThingPodGreenBall) if (actor->spr.type == 53 || actor->spr.type == kThingPodGreenBall)
{ {
if (Chance(0x500) || actor->spr.type == kThingPodGreenBall) if (Chance(0x500) || actor->spr.type == kThingPodGreenBall)
pFX = gFX.fxSpawnActor(FX_55, actor->sector(), DVector3(pos, floorZ - 0.25), 0); pFX = gFX.fxSpawnActor(FX_55, actor->sector(), DVector3(pos, floorZ - 0.25));
if (pFX) if (pFX)
pFX->spr.angle = nAngle; pFX->spr.angle = nAngle;
} }
else else
{ {
pFX = gFX.fxSpawnActor(FX_32, actor->sector(), DVector3(pos, floorZ - 0.25), 0); pFX = gFX.fxSpawnActor(FX_32, actor->sector(), DVector3(pos, floorZ - 0.25));
if (pFX) if (pFX)
pFX->spr.angle = nAngle; pFX->spr.angle = nAngle;
} }

View file

@ -273,7 +273,7 @@ void fxSpawnBlood(DBloodActor* actor, int)
if (!pSector) return; if (!pSector) return;
if (adult_lockout && gGameOptions.nGameType <= 0) if (adult_lockout && gGameOptions.nGameType <= 0)
return; return;
auto bloodactor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos, 0); auto bloodactor = gFX.fxSpawnActor(FX_27, actor->sector(), actor->spr.pos);
if (bloodactor) if (bloodactor)
{ {
bloodactor->spr.angle = DAngle180; bloodactor->spr.angle = DAngle180;
@ -301,9 +301,9 @@ void fxSpawnPodStuff(DBloodActor* actor, int)
return; return;
DBloodActor* spawnactor; DBloodActor* spawnactor;
if (actor->spr.type == kDudePodGreen) if (actor->spr.type == kDudePodGreen)
spawnactor = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos, 0); spawnactor = gFX.fxSpawnActor(FX_53, actor->sector(), actor->spr.pos);
else else
spawnactor = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos, 0); spawnactor = gFX.fxSpawnActor(FX_54, actor->sector(), actor->spr.pos);
if (spawnactor) if (spawnactor)
{ {
spawnactor->spr.angle = DAngle180; spawnactor->spr.angle = DAngle180;
@ -324,7 +324,7 @@ void fxSpawnEjectingBrass(DBloodActor* actor, double z, double dist, int rdist)
{ {
DVector3 pos(actor->spr.pos.XY() + actor->fClipdist() * actor->spr.angle.ToVector() + (actor->spr.angle + DAngle90).ToVector() * dist, z); DVector3 pos(actor->spr.pos.XY() + actor->fClipdist() * actor->spr.angle.ToVector() + (actor->spr.angle + DAngle90).ToVector() * dist, z);
auto pBrass = gFX.fxSpawnActor((FX_ID)(FX_37 + Random(3)), actor->sector(), pos, 0); auto pBrass = gFX.fxSpawnActor((FX_ID)(FX_37 + Random(3)), actor->sector(), pos);
if (pBrass) if (pBrass)
{ {
if (!VanillaMode()) if (!VanillaMode())
@ -346,7 +346,7 @@ void fxSpawnEjectingShell(DBloodActor* actor, double z, double dist, int rdist)
{ {
DVector3 pos(actor->spr.pos.XY() + actor->fClipdist() * actor->spr.angle.ToVector() + (actor->spr.angle + DAngle90).ToVector() * dist, z); DVector3 pos(actor->spr.pos.XY() + actor->fClipdist() * actor->spr.angle.ToVector() + (actor->spr.angle + DAngle90).ToVector() * dist, z);
auto pShell = gFX.fxSpawnActor((FX_ID)(FX_40 + Random(3)), actor->sector(), pos, 0); auto pShell = gFX.fxSpawnActor((FX_ID)(FX_40 + Random(3)), actor->sector(), pos);
if (pShell) if (pShell)
{ {
if (!VanillaMode()) if (!VanillaMode())

View file

@ -93,7 +93,7 @@ class CFX {
public: public:
void destroy(DBloodActor*); void destroy(DBloodActor*);
void remove(DBloodActor*); void remove(DBloodActor*);
DBloodActor* fxSpawnActor(FX_ID a, sectortype* b, const DVector3& pos, DAngle f); DBloodActor* fxSpawnActor(FX_ID a, sectortype* b, const DVector3& pos, DAngle f = nullAngle);
void fxProcess(void); void fxProcess(void);
}; };

View file

@ -291,7 +291,7 @@ void GibFX(DBloodActor* actor, GIBFX* pGFX, DVector3* pPos, DVector3* pVel)
DAngle nAngle = RandomAngle(); DAngle nAngle = RandomAngle();
gPos = DVector3(actor->spr.pos.XY() + actor->fClipdist() * nAngle.ToVector(), bottom - RandomD(bottom - top, 8)); gPos = DVector3(actor->spr.pos.XY() + actor->fClipdist() * nAngle.ToVector(), bottom - RandomD(bottom - top, 8));
} }
auto pFX = gFX.fxSpawnActor(pGFX->fxId, pSector, gPos, 0); auto pFX = gFX.fxSpawnActor(pGFX->fxId, pSector, gPos);
if (pFX) if (pFX)
{ {
if (pGFX->at1 < 0) if (pGFX->at1 < 0)
@ -448,7 +448,7 @@ void GibFX(walltype* pWall, GIBFX* pGFX, double ceilZ, const DVector3& spread, D
r.Z = RandomD(spread.Z, 8) + ceilZ; r.Z = RandomD(spread.Z, 8) + ceilZ;
r.Y = RandomD(spread.Y, 4) + pWall->pos.Y; r.Y = RandomD(spread.Y, 4) + pWall->pos.Y;
r.X = RandomD(spread.X, 4) + pWall->pos.X; r.X = RandomD(spread.X, 4) + pWall->pos.X;
auto pGib = gFX.fxSpawnActor(pGFX->fxId, pSector, r, 0); auto pGib = gFX.fxSpawnActor(pGFX->fxId, pSector, r);
if (pGib) if (pGib)
{ {
if (pGFX->at1 < 0) if (pGFX->at1 < 0)

View file

@ -1790,17 +1790,17 @@ void debrisMove(int listIndex)
switch (tileGetSurfType(floorColl)) switch (tileGetSurfType(floorColl))
{ {
case kSurfLava: case kSurfLava:
if ((pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ), 0)) == NULL) break; if ((pFX = gFX.fxSpawnActor(FX_10, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ))) == NULL) break;
for (i = 0; i < 7; i++) for (i = 0; i < 7; i++)
{ {
if ((pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos, 0)) == NULL) continue; if ((pFX2 = gFX.fxSpawnActor(FX_14, pFX->sector(), pFX->spr.pos)) == NULL) continue;
pFX2->vel.X = Random2F(0x6aaaa); pFX2->vel.X = Random2F(0x6aaaa);
pFX2->vel.Y = Random2F(0x6aaaa); pFX2->vel.Y = Random2F(0x6aaaa);
pFX2->vel.Z = -Random2F(0xd5555); pFX2->vel.Z = -Random2F(0xd5555);
} }
break; break;
case kSurfWater: case kSurfWater:
gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ), 0); gFX.fxSpawnActor(FX_9, actor->sector(), DVector3(actor->spr.pos.XY(), floorZ));
break; break;
} }
@ -3354,7 +3354,7 @@ void useEffectGen(DBloodActor* sourceactor, DBloodActor* actor)
break; break;
} }
if ((pEffect = gFX.fxSpawnActor((FX_ID)fxId, actor->sector(), DVector3(actor->spr.pos.XY(), pos), 0)) != nullptr) if ((pEffect = gFX.fxSpawnActor((FX_ID)fxId, actor->sector(), DVector3(actor->spr.pos.XY(), pos))) != nullptr)
{ {
pEffect->SetOwner(sourceactor); pEffect->SetOwner(sourceactor);
@ -6456,7 +6456,7 @@ void useRandomItemGen(DBloodActor* actor)
{ {
if ((unsigned int)iactor->spr.type == actor->xspr.dropMsg && iactor->spr.pos == actor->spr.pos) if ((unsigned int)iactor->spr.type == actor->xspr.dropMsg && iactor->spr.pos == actor->spr.pos)
{ {
gFX.fxSpawnActor((FX_ID)29, actor->sector(), actor->spr.pos, 0); gFX.fxSpawnActor((FX_ID)29, actor->sector(), actor->spr.pos);
iactor->spr.type = kSpriteDecoration; iactor->spr.type = kSpriteDecoration;
actPostSprite(iactor, kStatFree); actPostSprite(iactor, kStatFree);
break; break;

View file

@ -2499,7 +2499,7 @@ void ActivateGenerator(DBloodActor* actor)
case kGenBubbleMulti: { case kGenBubbleMulti: {
double top, bottom; double top, bottom;
GetActorExtents(actor, &top, &bottom); GetActorExtents(actor, &top, &bottom);
gFX.fxSpawnActor((actor->spr.type == kGenBubble) ? FX_23 : FX_26, actor->sector(), DVector3(actor->spr.pos.XY(), top), 0); gFX.fxSpawnActor((actor->spr.type == kGenBubble) ? FX_23 : FX_26, actor->sector(), DVector3(actor->spr.pos.XY(), top));
break; break;
} }
} }