BsFMODAudioSource.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsFMODPrerequisites.h"
  5. #include "BsAudioSource.h"
  6. #include "BsFMODAudio.h"
  7. namespace BansheeEngine
  8. {
  9. /** @addtogroup FMOD
  10. * @{
  11. */
  12. /** FMOD implementation of an AudioSource. */
  13. class FMODAudioSource : public AudioSource
  14. {
  15. public:
  16. FMODAudioSource();
  17. virtual ~FMODAudioSource();
  18. /** @copydoc AudioSource::setClip */
  19. void setClip(const HAudioClip& clip) override;
  20. /** @copydoc AudioSource::setPosition */
  21. void setPosition(const Vector3& position) override;
  22. /** @copydoc AudioSource::setVelocity */
  23. void setVelocity(const Vector3& velocity) override;
  24. /** @copydoc AudioSource::setVolume */
  25. void setVolume(float volume) override;
  26. /** @copydoc AudioSource::setPitch */
  27. void setPitch(float pitch) override;
  28. /** @copydoc AudioSource::setIsLooping */
  29. void setIsLooping(bool loop) override;
  30. /** @copydoc AudioSource::setPriority */
  31. void setPriority(INT32 priority) override;
  32. /** @copydoc AudioSource::setTime */
  33. void setTime(float time) override;
  34. /** @copydoc AudioSource::getTime */
  35. float getTime() const override;
  36. /** @copydoc AudioSource::play */
  37. void play() override;
  38. /** @copydoc AudioSource::pause */
  39. void pause() override;
  40. /** @copydoc AudioSource::stop */
  41. void stop() override;
  42. /** @copydoc AudioSource::getState */
  43. AudioSourceState getState() const override;
  44. private:
  45. friend class FMODAudio;
  46. /** Pauses or resumes audio playback due to the global pause setting. */
  47. void setGlobalPause(bool pause);
  48. /** @copydoc IResourceListener::onClipChanged */
  49. void onClipChanged() override;
  50. FMOD::Channel* mChannel;
  51. FMOD::Sound* mStreamingSound;
  52. float mTime;
  53. bool mGloballyPaused;
  54. AudioSourceState mGlobalUnpauseState;
  55. };
  56. /** @} */
  57. }