home *** CD-ROM | disk | FTP | other *** search
/ Game Audio Programming / GameAudioProgramming.iso / Game_Audio / audio_sdk / src / AudioLib / Sound3D.h < prev    next >
C/C++ Source or Header  |  2002-07-06  |  3KB  |  137 lines

  1. /***********************************************************\
  2. Copyright (C) James Boer, 2002. 
  3. All rights reserved worldwide.
  4.  
  5. This software is provided "as is" without express or implied
  6. warranties. You may freely copy and compile this source into
  7. applications you distribute provided that the copyright text
  8. below is included in the resulting source code, for example:
  9. "Portions Copyright (C) James Boer, 2002"
  10. \***********************************************************/
  11. #ifndef __SOUND3D_H
  12. #define __SOUND3D_H
  13.  
  14. #include <dsound.h>
  15. #include "Audio.h"
  16. #include "Sound.h"
  17. #include "Extensions.h"
  18.  
  19. namespace Audio
  20. {
  21.  
  22. class Sound3D : public ISound3D
  23. {
  24. DEFINE_POOL(Sound3D);
  25.  
  26. public:
  27.     bool Init(const Sound3DInit& create);
  28.     void Destroy();
  29.  
  30.     bool IsInitialized() const    {  return m_bInitialized;  }
  31.  
  32.     bool Load();
  33.     bool Unload();
  34.     bool IsLoaded()    const    {  return m_bLoaded;  }
  35.  
  36.     bool Play();
  37.     bool Stop();
  38.     bool Pause();
  39.  
  40.     bool IsPlaying() const;
  41.     bool IsPaused() const;
  42.  
  43.     bool IsLooping() const;
  44.  
  45.     bool SetVolume(float fVolume);
  46.     bool GetVolume(float &fVolume) const;
  47.  
  48.     bool SetPitch(float fPitch);
  49.     bool GetPitch(float& fPitch) const;
  50.  
  51.     bool SetReadCursor(uint32 nBytes);
  52.     bool GetReadCursor(uint32& nBytes) const;
  53.     bool GetSourceSize(uint32& nBytes) const;
  54.  
  55.     // All 3d properties
  56.     bool SetProperties(const Sound3DProp& prop);
  57.     bool GetProperties(Sound3DProp& prop) const;
  58.  
  59.     // 3D Properties
  60.     bool SetPosition(const AUDIOVECTOR& vPosition);
  61.     bool GetPosition(AUDIOVECTOR& vPosition) const;
  62.  
  63.     bool SetVelocity(const AUDIOVECTOR& vVelocity);
  64.     bool GetVelocity(AUDIOVECTOR& vVelocity) const;
  65.  
  66.     bool SetMaxDistance(float fMaxDist);
  67.     bool GetMaxDistance(float& fMaxDist) const;
  68.  
  69.     bool SetMinDistance(float fMinDist);
  70.     bool GetMinDistance(float& fMinDist) const;
  71.  
  72.     bool SetConeAngles(uint32 nInside, uint32 nOutside);
  73.     bool GetConeAngles(uint32& nInside, uint32& nOutside) const;
  74.  
  75.     bool SetConeOrientation(const AUDIOVECTOR& vOrientation);
  76.     bool GetConeOrientation(AUDIOVECTOR& vOrientation) const;
  77.  
  78.     bool SetConeOutsideVolume(float fVolume);
  79.     bool GetConeOutsideVolume(float& fVolume) const;
  80.  
  81.     bool SetMode(uint32 nMode);
  82.     bool GetMode(uint32& nMode) const;
  83.  
  84.     // Generic property support (for driver-specific extensions)
  85.     bool QuerySupport(const GUID& guid, uint32 nID, uint32* pTypeSupport);
  86.     bool Get(const GUID& guidProperty, uint32 nID, void* pInstanceData,
  87.         uint32 nInstanceLength, void* pPropData, 
  88.         uint32 nPropLength, uint32* pBytesReturned);
  89.     bool Set(const GUID& guidProperty, uint32 nID, void* pInstanceData,
  90.         uint32 nInstanceLength, void* pPropData, 
  91.         uint32 nPropLength,
  92.         bool bStoreProperty);
  93.  
  94.     IEAXBuffer* EAX();
  95.     IZoomFX* ZoomFX();
  96.  
  97. public:
  98.     void Term();
  99.  
  100.     void Clear();
  101.  
  102.     bool operator < (const Sound3D& snd) const;
  103.  
  104.     bool IsLoading()            {  return m_bLoading;  }
  105.     bool DoLoad();
  106.  
  107.     inline bool IsMusic()        {  return m_Init.m_bMusic;  }
  108.  
  109. // Private data
  110. private:
  111.  
  112.     Sound3D();
  113.     virtual ~Sound3D();
  114.  
  115.     LPDIRECTSOUND3DBUFFER8    m_p3DBuffer;
  116.     PropertySet                m_PropertySet;
  117.     Sound*                    m_pSound;
  118.     bool                    m_bInitialized;
  119.  
  120.     // Extension interface implementations
  121.     EAXBuffer                m_EAXBuffer;
  122.     ZoomFx                    m_ZoomFX;
  123.  
  124.     // Initial sound properties set at Init()
  125.     Sound3DInit                m_Init;
  126.  
  127.     // Load and Play status flags
  128.     bool                    m_bQueuePlayback;
  129.     bool                    m_bLoading;
  130.     bool                    m_bLoaded;
  131.  
  132. };
  133.  
  134. }; // namespace Audio
  135.  
  136.  
  137. #endif // __SOUND3D_H