BsAudioSource.cpp 1.5 KB

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