BsAudio.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsModule.h"
  6. namespace BansheeEngine
  7. {
  8. /** @addtogroup Audio
  9. * @{
  10. */
  11. struct AudioDevice
  12. {
  13. WString name;
  14. };
  15. /** Provides global functionality relating to sounds and music. */
  16. class BS_CORE_EXPORT Audio : public Module<Audio>
  17. {
  18. public:
  19. virtual ~Audio() { }
  20. virtual void setVolume(float volume) = 0;
  21. virtual float getVolume() const = 0;
  22. virtual void setPaused(bool paused) = 0;
  23. virtual bool isPaused() const = 0;
  24. virtual void update() = 0;
  25. virtual void setActiveDevice(const AudioDevice& device) = 0;
  26. virtual AudioDevice getActiveDevice() const = 0;
  27. virtual AudioDevice getDefaultDevice() const = 0;
  28. virtual const Vector<AudioDevice>& getAllDevices() const = 0;
  29. protected:
  30. friend class AudioClip;
  31. friend class AudioListener;
  32. friend class AudioSource;
  33. /**
  34. * Creates a new audio clip.
  35. *
  36. * @param[in] samples Stream containing audio samples in format specified in @p desc.
  37. * @param[in] streamSize Size of the audio data in the provided stream, in bytes.
  38. * @param[in] numSamples Number of samples in @p samples stream.
  39. * @param[in] desc Descriptor describing the type of the audio stream (format, sample rate, etc.).
  40. * @return Newly created AudioClip. Must be manually initialized.
  41. */
  42. virtual SPtr<AudioClip> createClip(const SPtr<DataStream>& samples, UINT32 streamSize, UINT32 numSamples,
  43. const AUDIO_CLIP_DESC& desc) = 0;
  44. virtual SPtr<AudioListener> createListener() = 0;
  45. virtual SPtr<AudioSource> createSource() = 0;
  46. };
  47. /** Provides easier access to Audio. */
  48. BS_CORE_EXPORT Audio& gAudio();
  49. /** @} */
  50. }