isle/LEGO1/lego/legoomni/src/audio/lego3dwavepresenter.cpp
Christian Semmler ab4ba9fc4f
Implement/match Lego3DWavePresenter::StartingTickle (#972)
* Implement/match Lego3DWavePresenter::StartingTickle

* Fix annotation

* Add StreamingTickle

* Rename
2024-05-30 16:27:18 +02:00

67 lines
1.3 KiB
C++

#include "lego3dwavepresenter.h"
#include "mxcompositepresenter.h"
#include "mxdsaction.h"
#include "mxomni.h"
DECOMP_SIZE_ASSERT(Lego3DWavePresenter, 0xa0)
// FUNCTION: LEGO1 0x1004a7c0
MxResult Lego3DWavePresenter::AddToManager()
{
MxResult result = MxWavePresenter::AddToManager();
MxWavePresenter::Init();
if (MxOmni::IsSound3D()) {
m_is3d = TRUE;
}
return result;
}
// FUNCTION: LEGO1 0x1004a7f0
void Lego3DWavePresenter::Destroy()
{
MxWavePresenter::Destroy();
MxWavePresenter::Init();
if (MxOmni::IsSound3D()) {
m_is3d = TRUE;
}
}
// FUNCTION: LEGO1 0x1004a810
// FUNCTION: BETA10 0x1003a3b0
void Lego3DWavePresenter::StartingTickle()
{
if (MxOmni::IsSound3D()) {
m_is3d = TRUE;
}
MxWavePresenter::StartingTickle();
if (m_dsBuffer != NULL) {
MxU16 extraLength;
char* buff;
m_action->GetExtra(extraLength, buff);
if (!strcmp(buff, "FROM_PARENT") && m_compositePresenter != NULL) {
m_compositePresenter->GetAction()->GetExtra(extraLength, buff);
}
if (m_sound.Create(m_dsBuffer, buff, m_volume) != SUCCESS) {
m_dsBuffer->Release();
m_dsBuffer = NULL;
EndAction();
}
}
}
// FUNCTION: LEGO1 0x1004a8b0
// FUNCTION: BETA10 0x1003a4cc
void Lego3DWavePresenter::StreamingTickle()
{
MxWavePresenter::StreamingTickle();
m_sound.FUN_100118e0(m_dsBuffer);
}