BsAudio.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Audio/BsAudio.h"
  4. #include "Audio/BsAudioSource.h"
  5. namespace bs
  6. {
  7. void Audio::play(const HAudioClip& clip, const Vector3& position, float volume)
  8. {
  9. SPtr<AudioSource> source = createSource();
  10. source->setClip(clip);
  11. source->setPosition(position);
  12. source->setVolume(volume);
  13. source->play();
  14. mManualSources.push_back(source);
  15. }
  16. void Audio::stopManualSources()
  17. {
  18. for (auto& source : mManualSources)
  19. source->stop();
  20. mManualSources.clear();
  21. }
  22. void Audio::_update()
  23. {
  24. UINT32 numSources = (UINT32)mManualSources.size();
  25. for(UINT32 i = 0; i < numSources; i++)
  26. {
  27. if (mManualSources[i]->getState() != AudioSourceState::Stopped)
  28. mTempSources.push_back(mManualSources[i]);
  29. }
  30. std::swap(mTempSources, mManualSources);
  31. mTempSources.clear();
  32. }
  33. Audio& gAudio()
  34. {
  35. return Audio::instance();
  36. }
  37. }