#ifndef LEGO3DSOUND_H
#define LEGO3DSOUND_H

#include "decomp.h"
#include "mxtypes.h"

#include <dsound.h>

class LegoActor;
class LegoROI;

// VTABLE: LEGO1 0x100d5778
// SIZE 0x30
class Lego3DSound {
public:
	Lego3DSound();
	virtual ~Lego3DSound();

	void Init();
	MxResult Create(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char* p_name, MxS32 p_volume);
	void Destroy();
	MxU32 UpdatePosition(LPDIRECTSOUNDBUFFER p_directSoundBuffer);
	void FUN_10011a60(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char* p_name);
	void Reset();
	MxS32 SetDistance(MxS32 p_min, MxS32 p_max);

	// SYNTHETIC: LEGO1 0x10011650
	// Lego3DSound::`scalar deleting destructor'

private:
	LPDIRECTSOUND3DBUFFER m_ds3dBuffer; // 0x08
	LegoROI* m_roi;                     // 0x0c
	LegoROI* m_positionROI;             // 0x10
	MxBool m_enabled;                   // 0x14
	MxBool m_isActor;                   // 0x15
	LegoActor* m_actor;                 // 0x18
	double m_frequencyFactor;           // 0x20
	DWORD m_dwFrequency;                // 0x28
	MxS32 m_volume;                     // 0x2c
};

// GLOBAL: LEGO1 0x100db6c0
// IID_IDirectSound3DBuffer

#endif // LEGO3DSOUND_H