feat(sound): set fade in and fade out in SI2::PlaySoundKit

This commit is contained in:
fallenoak 2025-11-26 23:24:35 -06:00
parent 611bf14fde
commit 0f9a2afe2a
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
6 changed files with 40 additions and 0 deletions

View File

@ -599,6 +599,22 @@ void SESound::Play() {
} }
} }
void SESound::SetFadeInTime(float fadeInTime) {
if (!this->m_internal) {
return;
}
this->m_internal->m_fadeInTime = fadeInTime;
}
void SESound::SetFadeOutTime(float fadeOutTime) {
if (!this->m_internal) {
return;
}
this->m_internal->m_fadeOutTime = fadeOutTime;
}
void SESound::SetUserData(SEUserData* userData) { void SESound::SetUserData(SEUserData* userData) {
if (!this->m_internal) { if (!this->m_internal) {
return; return;

View File

@ -40,6 +40,8 @@ class SESound {
bool IsPlaying(); bool IsPlaying();
int32_t Load(const char* filename, int32_t a3, FMOD::SoundGroup* soundGroup1, FMOD::SoundGroup* soundGroup2, bool a6, bool a7, uint32_t a8, int32_t a9, uint32_t a10); int32_t Load(const char* filename, int32_t a3, FMOD::SoundGroup* soundGroup1, FMOD::SoundGroup* soundGroup2, bool a6, bool a7, uint32_t a8, int32_t a9, uint32_t a10);
void Play(); void Play();
void SetFadeInTime(float fadeInTime);
void SetFadeOutTime(float fadeOutTime);
void SetUserData(SEUserData* userData); void SetUserData(SEUserData* userData);
private: private:

View File

@ -31,6 +31,12 @@ class SESoundInternal : public TSLinkedNode<SESoundInternal> {
FMOD::Channel* m_fmodChannel = nullptr; FMOD::Channel* m_fmodChannel = nullptr;
SESound* m_sound = nullptr; SESound* m_sound = nullptr;
SEUserData* m_userData = nullptr; SEUserData* m_userData = nullptr;
float m_volume = 1.0f;
float m_fadeVolume = 0.0f;
float m_fadeInTime = 0.0f;
float m_fadeOutTime = 0.0f;
uint8_t m_fadeIn = 0;
uint8_t m_fadeOut = 0;
// TODO // TODO
int32_t m_useCache = 0; int32_t m_useCache = 0;
int32_t m_type = 0; int32_t m_type = 0;

View File

@ -426,6 +426,16 @@ int32_t SI2::PlaySoundKit(int32_t id, int32_t a2, SOUNDKITOBJECT* object, SoundK
// TODO // TODO
if (properties->m_fadeInTime >= 0.0f) {
sound->SetFadeInTime(properties->m_fadeInTime);
}
if (properties->m_fadeOutTime >= 0.0f) {
sound->SetFadeOutTime(properties->m_fadeOutTime);
}
// TODO
sound->CompleteLoad(); sound->CompleteLoad();
// TODO // TODO

View File

@ -8,6 +8,9 @@ void SoundKitProperties::ResetToDefaults() {
// TODO // TODO
this->m_fadeInTime = 0.0f;
this->m_fadeOutTime = 0.0f;
this->m_type = 0; this->m_type = 0;
// TODO // TODO

View File

@ -8,6 +8,9 @@ class SoundKitProperties {
// Member variables // Member variables
uint32_t m_type; uint32_t m_type;
// TODO // TODO
float m_fadeInTime;
float m_fadeOutTime;
// TODO
int32_t int20; int32_t int20;
uint32_t uint24; uint32_t uint24;
uint32_t uint28; uint32_t uint28;