119 lines
3.2 KiB
C++
119 lines
3.2 KiB
C++
#ifndef __MILESLIB_CSOUNDINSTANCE_H__
|
|
#define __MILESLIB_CSOUNDINSTANCE_H__
|
|
|
|
#include "SoundBase.h"
|
|
|
|
class ISoundInstance : public CSoundBase
|
|
{
|
|
public:
|
|
ISoundInstance() {}
|
|
virtual ~ISoundInstance() {}
|
|
|
|
virtual bool Initialize() = 0;
|
|
virtual void Destroy() = 0;
|
|
virtual bool SetSound(CSoundData* pSound) = 0;
|
|
virtual void Play(int iLoopCount = 1, DWORD dwPlayCycleTimeLimit = 0) const = 0;
|
|
virtual void Pause() const = 0;
|
|
virtual void Resume() const = 0;
|
|
virtual void Stop() = 0;
|
|
virtual void GetVolume(float& rfVolume) const = 0;
|
|
virtual void SetVolume(float volume) const = 0;
|
|
virtual bool IsDone() const = 0;
|
|
virtual void SetPosition(float x, float y, float z) const = 0;
|
|
virtual void SetOrientation(float x_face, float y_face, float z_face,
|
|
float x_normal, float y_normal, float z_normal) const = 0;
|
|
virtual void SetVelocity(float x, float y, float z, float fMagnitude) const = 0;
|
|
};
|
|
|
|
class CSoundInstance2D : public ISoundInstance
|
|
{
|
|
public:
|
|
CSoundInstance2D();
|
|
virtual ~CSoundInstance2D();
|
|
|
|
public: // from interface
|
|
bool Initialize();
|
|
void Destroy();
|
|
|
|
bool SetSound(CSoundData* pSound);
|
|
void Play(int iLoopCount = 1, DWORD dwPlayCycleTimeLimit = 0) const;
|
|
void Pause() const;
|
|
void Resume() const;
|
|
void Stop();
|
|
void GetVolume(float& rfVolume) const;
|
|
void SetVolume(float volume) const;
|
|
bool IsDone() const;
|
|
void SetPosition(float x, float y, float z) const;
|
|
void SetOrientation(float x_face, float y_face, float z_face,
|
|
float x_normal, float y_normal, float z_normal) const;
|
|
void SetVelocity(float fx, float fy, float fz, float fMagnitude) const;
|
|
|
|
private:
|
|
HSAMPLE m_sample;
|
|
CSoundData* m_pSoundData;
|
|
};
|
|
|
|
class CSoundInstance3D : public ISoundInstance
|
|
{
|
|
public:
|
|
CSoundInstance3D();
|
|
virtual ~CSoundInstance3D();
|
|
|
|
public: // from interface
|
|
bool Initialize();
|
|
void Destroy();
|
|
|
|
bool SetSound(CSoundData * pSound);
|
|
void Play(int iLoopCount = 1, DWORD dwPlayCycleTimeLimit = 0) const;
|
|
void Pause() const;
|
|
void Resume() const;
|
|
void Stop();
|
|
void GetVolume(float& rfVolume) const;
|
|
void SetVolume(float volume) const;
|
|
bool IsDone() const;
|
|
|
|
void SetPosition(float x, float y, float z) const;
|
|
void SetOrientation(float x_face, float y_face, float z_face,
|
|
float x_normal, float y_normal, float z_normal) const;
|
|
void SetVelocity(float fx, float fy, float fz, float fMagnitude) const;
|
|
|
|
void UpdatePosition(float fElapsedTime);
|
|
|
|
private:
|
|
H3DSAMPLE m_sample;
|
|
CSoundData * m_pSoundData;
|
|
};
|
|
|
|
class CSoundInstanceStream : public ISoundInstance
|
|
{
|
|
public:
|
|
CSoundInstanceStream();
|
|
virtual ~CSoundInstanceStream();
|
|
|
|
public: // from interface
|
|
bool Initialize();
|
|
void Destroy();
|
|
|
|
void SetStream(HSTREAM stream);
|
|
bool SetSound(CSoundData* pSound);
|
|
|
|
void Play(int iLoopCount = 1, DWORD dwPlayCycleTimeLimit = 0) const;
|
|
void Pause() const;
|
|
void Resume() const;
|
|
void Stop();
|
|
void GetVolume(float& rfVolume) const;
|
|
void SetVolume(float volume) const;
|
|
bool IsDone() const;
|
|
bool IsData() const;
|
|
|
|
void SetPosition(float x, float y, float z) const;
|
|
void SetOrientation(float x_face, float y_face, float z_face,
|
|
float x_normal, float y_normal, float z_normal) const;
|
|
void SetVelocity(float fx, float fy, float fz, float fMagnitude) const;
|
|
|
|
private:
|
|
HSTREAM m_stream;
|
|
};
|
|
|
|
#endif
|