BsAudio.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. Transform transform;
  10. transform.setPosition(position);
  11. SPtr<AudioSource> source = createSource();
  12. source->setClip(clip);
  13. source->setTransform(transform);
  14. source->setVolume(volume);
  15. source->play();
  16. mManualSources.push_back(source);
  17. }
  18. void Audio::stopManualSources()
  19. {
  20. for (auto& source : mManualSources)
  21. source->stop();
  22. mManualSources.clear();
  23. }
  24. void Audio::_update()
  25. {
  26. UINT32 numSources = (UINT32)mManualSources.size();
  27. for(UINT32 i = 0; i < numSources; i++)
  28. {
  29. if (mManualSources[i]->getState() != AudioSourceState::Stopped)
  30. mTempSources.push_back(mManualSources[i]);
  31. }
  32. std::swap(mTempSources, mManualSources);
  33. mTempSources.clear();
  34. }
  35. Audio& gAudio()
  36. {
  37. return Audio::instance();
  38. }
  39. }