BsAudioSource.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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 "BsVector3.h"
  6. namespace BansheeEngine
  7. {
  8. /** @addtogroup Audio
  9. * @{
  10. */
  11. enum class AudioSourceState
  12. {
  13. Playing,
  14. Paused,
  15. Stopped
  16. };
  17. class BS_CORE_EXPORT AudioSource
  18. {
  19. public:
  20. virtual ~AudioSource() { }
  21. virtual void setClip(const HAudioClip& clip);
  22. HAudioClip getClip() const { return mAudioClip; }
  23. virtual void setPosition(const Vector3& position);
  24. Vector3 getPosition() const { return mPosition; }
  25. virtual void setVelocity(const Vector3& velocity);
  26. Vector3 getVelocity() const { return mVelocity; }
  27. virtual void setVolume(float volume); // [0, 1] range
  28. float getVolume() const { return mVolume; }
  29. virtual void setPitch(float pitch);
  30. float getPitch() const { return mPitch; }
  31. virtual void setIsLooping(bool loop);
  32. bool getIsLooping() const { return mLoop; }
  33. virtual void setPriority(UINT32 priority);
  34. UINT32 getPriority() const { return mPriority; }
  35. virtual void setMinDistance(float distance);
  36. float getMinDistance() const { return mMinDistance; }
  37. virtual void setAttenuation(float attenuation);
  38. float getAttenuation() const { return mAttenuation; }
  39. virtual void play();
  40. virtual void pause();
  41. virtual void stop();
  42. AudioSourceState getState() const { return mState; }
  43. static SPtr<AudioSource> create();
  44. protected:
  45. AudioSource();
  46. HAudioClip mAudioClip;
  47. Vector3 mPosition;
  48. Vector3 mVelocity;
  49. float mVolume;
  50. float mPitch;
  51. bool mLoop;
  52. UINT32 mPriority;
  53. float mMinDistance;
  54. float mAttenuation;
  55. AudioSourceState mState;
  56. };
  57. /** @} */
  58. }