diff --git a/src/sound/SI2.cpp b/src/sound/SI2.cpp index e5dcc28..6568b99 100644 --- a/src/sound/SI2.cpp +++ b/src/sound/SI2.cpp @@ -1018,6 +1018,18 @@ void SI2::StartGlueMusic(const char* name) { EventRegister(EVENT_ID_POLL, &SI2::GlueMusicUpdate); } +int32_t SI2::StopGlueMusic(float fadeOutTime) { + EventUnregister(EVENT_ID_POLL, &SI2::GlueMusicUpdate); + + s_GlueMusicName[0] = '\0'; + + if (fadeOutTime < 0.0f) { + fadeOutTime = -1.0f; + } + + return SI2::StopOrFadeOut(&s_GlueMusicObject, 0, fadeOutTime, 1); +} + int32_t SI2::StopOrFadeOut(SOUNDKITOBJECT* object, int32_t stop, float fadeOutTime, int32_t a4) { auto userData = static_cast(object->m_sound.GetUserData()); diff --git a/src/sound/SI2.hpp b/src/sound/SI2.hpp index 5c58f45..ed90d54 100644 --- a/src/sound/SI2.hpp +++ b/src/sound/SI2.hpp @@ -36,6 +36,7 @@ class SI2 { static void RegisterUserCVars(); static void RegisterScriptFunctions(); static void StartGlueMusic(const char* name); + static int32_t StopGlueMusic(float fadeOutTime); static int32_t StopOrFadeOut(SOUNDKITOBJECT* object, int32_t stop, float fadeOutTime, int32_t a4); };