BsScriptAudio.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptAudio.h"
  4. #include "BsMonoMethod.h"
  5. #include "BsMonoUtil.h"
  6. namespace BansheeEngine
  7. {
  8. ScriptAudioDevice::ScriptAudioDevice(MonoObject* instance, const AudioDevice& device)
  9. :ScriptObject(instance), mDevice(device)
  10. { }
  11. void ScriptAudioDevice::initRuntimeData()
  12. {
  13. metaData.scriptClass->addInternalCall("Internal_GetName", &ScriptAudioDevice::internal_GetName);
  14. }
  15. MonoObject* ScriptAudioDevice::create(const AudioDevice& device)
  16. {
  17. MonoObject* instance = metaData.scriptClass->createInstance();
  18. new (bs_alloc<ScriptAudioDevice>()) ScriptAudioDevice(instance, device);
  19. return instance;
  20. }
  21. MonoString* ScriptAudioDevice::internal_GetName(ScriptAudioDevice* thisPtr)
  22. {
  23. return MonoUtil::wstringToMono(thisPtr->getDevice().name);
  24. }
  25. ScriptAudio::ScriptAudio(MonoObject* instance)
  26. :ScriptObject(instance)
  27. { }
  28. void ScriptAudio::initRuntimeData()
  29. {
  30. metaData.scriptClass->addInternalCall("Internal_SetVolume", &ScriptAudio::internal_SetVolume);
  31. metaData.scriptClass->addInternalCall("Internal_GetVolume", &ScriptAudio::internal_GetVolume);
  32. metaData.scriptClass->addInternalCall("Internal_SetActiveDevice", &ScriptAudio::internal_SetActiveDevice);
  33. metaData.scriptClass->addInternalCall("Internal_GetActiveDevice", &ScriptAudio::internal_GetActiveDevice);
  34. metaData.scriptClass->addInternalCall("Internal_GetDefaultDevice", &ScriptAudio::internal_GetDefaultDevice);
  35. metaData.scriptClass->addInternalCall("Internal_GetAllDevices", &ScriptAudio::internal_GetAllDevices);
  36. }
  37. void ScriptAudio::internal_SetVolume(float volume)
  38. {
  39. gAudio().setVolume(volume);
  40. }
  41. float ScriptAudio::internal_GetVolume()
  42. {
  43. return gAudio().getVolume();
  44. }
  45. void ScriptAudio::internal_SetActiveDevice(ScriptAudioDevice* device)
  46. {
  47. gAudio().setActiveDevice(device->getDevice());
  48. }
  49. MonoObject* ScriptAudio::internal_GetActiveDevice()
  50. {
  51. return ScriptAudioDevice::create(gAudio().getActiveDevice());
  52. }
  53. MonoObject* ScriptAudio::internal_GetDefaultDevice()
  54. {
  55. return ScriptAudioDevice::create(gAudio().getDefaultDevice());
  56. }
  57. MonoArray* ScriptAudio::internal_GetAllDevices()
  58. {
  59. const Vector<AudioDevice>& devices = gAudio().getAllDevices();
  60. UINT32 numDevices = (UINT32)devices.size();
  61. ScriptArray scriptArray = ScriptArray::create<ScriptAudioDevice>(numDevices);
  62. for (UINT32 i = 0; i < numDevices; i++)
  63. scriptArray.set(i, ScriptAudioDevice::create(devices[i]));
  64. return scriptArray.getInternal();
  65. }
  66. }