BsAudioSource.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Audio/BsAudioSource.h"
  4. #include "Audio/BsAudio.h"
  5. #include "Math/BsMath.h"
  6. namespace bs
  7. {
  8. AudioSource::AudioSource()
  9. : mPosition(BsZero), mVelocity(BsZero), mVolume(1.0f), mPitch(1.0f), mLoop(false), mPriority(0)
  10. , mMinDistance(1.0f), mAttenuation(1.0f)
  11. {
  12. }
  13. void AudioSource::setClip(const HAudioClip& clip)
  14. {
  15. mAudioClip = clip;
  16. markListenerResourcesDirty();
  17. }
  18. void AudioSource::setPosition(const Vector3& position)
  19. {
  20. mPosition = position;
  21. }
  22. void AudioSource::setVelocity(const Vector3& velocity)
  23. {
  24. mVelocity = velocity;
  25. }
  26. void AudioSource::setVolume(float volume)
  27. {
  28. mVolume = Math::clamp01(volume);
  29. }
  30. void AudioSource::setPitch(float pitch)
  31. {
  32. mPitch = pitch;
  33. }
  34. void AudioSource::setIsLooping(bool loop)
  35. {
  36. mLoop = loop;
  37. }
  38. void AudioSource::setPriority(INT32 priority)
  39. {
  40. mPriority = priority;
  41. }
  42. void AudioSource::setMinDistance(float distance)
  43. {
  44. mMinDistance = distance;
  45. }
  46. void AudioSource::setAttenuation(float attenuation)
  47. {
  48. mAttenuation = attenuation;
  49. }
  50. SPtr<AudioSource> AudioSource::create()
  51. {
  52. return gAudio().createSource();
  53. }
  54. void AudioSource::getListenerResources(Vector<HResource>& resources)
  55. {
  56. if (mAudioClip != nullptr)
  57. resources.push_back(mAudioClip);
  58. }
  59. void AudioSource::notifyResourceChanged(const HResource& resource)
  60. {
  61. onClipChanged();
  62. }
  63. }