From 668c34d4c142eadeff962231ad891da823f59aee Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 29 Oct 2020 00:08:06 +0100 Subject: [PATCH] - ensure for all games that deleting a sprite unlinks all sounds from it. This was only present in Duke but is needed for all games. --- source/blood/src/db.cpp | 4 ++++ source/exhumed/src/exhumed.cpp | 3 +++ source/sw/src/sprite.cpp | 3 +++ 3 files changed, 10 insertions(+) diff --git a/source/blood/src/db.cpp b/source/blood/src/db.cpp index 07db564b1..20687e4d0 100644 --- a/source/blood/src/db.cpp +++ b/source/blood/src/db.cpp @@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "m_crc32.h" #include "md4.h" #include "automap.h" +#include "raze_sound.h" //#include "actor.h" #include "globals.h" @@ -210,6 +211,9 @@ int qinsertsprite(short nSector, short nStat) // Replace int DeleteSprite(int nSprite) { + FVector3 pos = GetSoundPos(&sprite[nSprite].pos); + soundEngine->RelinkSound(SOURCE_Actor, &sprite[nSprite], nullptr, &pos); + if (sprite[nSprite].extra > 0) { dbDeleteXSprite(sprite[nSprite].extra); diff --git a/source/exhumed/src/exhumed.cpp b/source/exhumed/src/exhumed.cpp index 56ef8e08d..212e67010 100644 --- a/source/exhumed/src/exhumed.cpp +++ b/source/exhumed/src/exhumed.cpp @@ -555,6 +555,9 @@ void mydeletesprite(int nSprite) I_Error("bad sprite value %d handed to mydeletesprite", nSprite); } + FVector3 pos = GetSoundPos(&sprite[nSprite].pos); + soundEngine->RelinkSound(SOURCE_Actor, &sprite[nSprite], nullptr, &pos); + deletesprite(nSprite); if (nSprite == besttarget) { diff --git a/source/sw/src/sprite.cpp b/source/sw/src/sprite.cpp index 4bb5301ad..e7994b048 100644 --- a/source/sw/src/sprite.cpp +++ b/source/sw/src/sprite.cpp @@ -799,6 +799,9 @@ KillSprite(int16_t SpriteNum) User[SpriteNum] = 0; } + FVector3 pos = GetSoundPos(&sprite[SpriteNum].pos); + soundEngine->RelinkSound(SOURCE_Actor, &sprite[SpriteNum], nullptr, &pos); + deletesprite(SpriteNum); // shred your garbage - but not statnum statnum = sp->statnum;