BsAudioSource.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. #include "Private/RTTI/BsAudioSourceRTTI.h"
  7. namespace bs
  8. {
  9. AudioSource::AudioSource()
  10. : mVelocity(BsZero), mVolume(1.0f), mPitch(1.0f), mLoop(false), mPriority(0), 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::setVelocity(const Vector3& velocity)
  19. {
  20. mVelocity = velocity;
  21. }
  22. void AudioSource::setVolume(float volume)
  23. {
  24. mVolume = Math::clamp01(volume);
  25. }
  26. void AudioSource::setPitch(float pitch)
  27. {
  28. mPitch = pitch;
  29. }
  30. void AudioSource::setIsLooping(bool loop)
  31. {
  32. mLoop = loop;
  33. }
  34. void AudioSource::setPriority(INT32 priority)
  35. {
  36. mPriority = priority;
  37. }
  38. void AudioSource::setMinDistance(float distance)
  39. {
  40. mMinDistance = distance;
  41. }
  42. void AudioSource::setAttenuation(float attenuation)
  43. {
  44. mAttenuation = attenuation;
  45. }
  46. SPtr<AudioSource> AudioSource::create()
  47. {
  48. return gAudio().createSource();
  49. }
  50. void AudioSource::getListenerResources(Vector<HResource>& resources)
  51. {
  52. if (mAudioClip != nullptr)
  53. resources.push_back(mAudioClip);
  54. }
  55. void AudioSource::notifyResourceChanged(const HResource& resource)
  56. {
  57. onClipChanged();
  58. }
  59. RTTITypeBase* AudioSource::getRTTIStatic()
  60. {
  61. return AudioSourceRTTI::instance();
  62. }
  63. RTTITypeBase* AudioSource::getRTTI() const
  64. {
  65. return AudioSource::getRTTIStatic();
  66. }
  67. }