BsScriptAudioSource.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptAudioSource.h"
  4. #include "BsMonoUtil.h"
  5. #include "BsMonoClass.h"
  6. #include "BsMonoMethod.h"
  7. #include "BsAudioSource.h"
  8. #include "BsScriptAudioClip.h"
  9. using namespace std::placeholders;
  10. namespace BansheeEngine
  11. {
  12. ScriptAudioSource::ScriptAudioSource(MonoObject* instance, const SPtr<AudioSource>& source)
  13. :ScriptObject(instance), mSource(source)
  14. { }
  15. void ScriptAudioSource::initRuntimeData()
  16. {
  17. metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptAudioSource::internal_CreateInstance);
  18. metaData.scriptClass->addInternalCall("Internal_Destroy", &ScriptAudioSource::internal_Destroy);
  19. metaData.scriptClass->addInternalCall("Internal_SetPosition", &ScriptAudioSource::internal_SetPosition);
  20. metaData.scriptClass->addInternalCall("Internal_SetVelocity", &ScriptAudioSource::internal_SetVelocity);
  21. metaData.scriptClass->addInternalCall("Internal_SetClip", &ScriptAudioSource::internal_SetClip);
  22. metaData.scriptClass->addInternalCall("Internal_SetVolume", &ScriptAudioSource::internal_SetVolume);
  23. metaData.scriptClass->addInternalCall("Internal_SetPitch", &ScriptAudioSource::internal_SetPitch);
  24. metaData.scriptClass->addInternalCall("Internal_SetIsLooping", &ScriptAudioSource::internal_SetIsLooping);
  25. metaData.scriptClass->addInternalCall("Internal_SetPriority", &ScriptAudioSource::internal_SetPriority);
  26. metaData.scriptClass->addInternalCall("Internal_SetMinDistance", &ScriptAudioSource::internal_SetMinDistance);
  27. metaData.scriptClass->addInternalCall("Internal_SetAttenuation", &ScriptAudioSource::internal_SetAttenuation);
  28. metaData.scriptClass->addInternalCall("Internal_Play", &ScriptAudioSource::internal_Play);
  29. metaData.scriptClass->addInternalCall("Internal_Pause", &ScriptAudioSource::internal_Pause);
  30. metaData.scriptClass->addInternalCall("Internal_Stop", &ScriptAudioSource::internal_Stop);
  31. metaData.scriptClass->addInternalCall("Internal_SetTime", &ScriptAudioSource::internal_SetTime);
  32. metaData.scriptClass->addInternalCall("Internal_GetTime", &ScriptAudioSource::internal_GetTime);
  33. metaData.scriptClass->addInternalCall("Internal_GetState", &ScriptAudioSource::internal_GetState);
  34. }
  35. void ScriptAudioSource::internal_CreateInstance(MonoObject* instance)
  36. {
  37. SPtr<AudioSource> source = AudioSource::create();
  38. new (bs_alloc<ScriptAudioSource>()) ScriptAudioSource(instance, source);
  39. }
  40. void ScriptAudioSource::internal_Destroy(ScriptAudioSource* thisPtr)
  41. {
  42. thisPtr->mSource = nullptr;
  43. }
  44. void ScriptAudioSource::internal_SetPosition(ScriptAudioSource* thisPtr, Vector3* position)
  45. {
  46. thisPtr->mSource->setPosition(*position);
  47. }
  48. void ScriptAudioSource::internal_SetVelocity(ScriptAudioSource* thisPtr, Vector3* velocity)
  49. {
  50. thisPtr->mSource->setVelocity(*velocity);
  51. }
  52. void ScriptAudioSource::internal_SetClip(ScriptAudioSource* thisPtr, ScriptAudioClip* clip)
  53. {
  54. HAudioClip audioClip;
  55. if (clip != nullptr)
  56. audioClip = clip->getHandle();
  57. thisPtr->mSource->setClip(audioClip);
  58. }
  59. void ScriptAudioSource::internal_SetVolume(ScriptAudioSource* thisPtr, float volume)
  60. {
  61. thisPtr->mSource->setVolume(volume);
  62. }
  63. void ScriptAudioSource::internal_SetPitch(ScriptAudioSource* thisPtr, float pitch)
  64. {
  65. thisPtr->mSource->setPitch(pitch);
  66. }
  67. void ScriptAudioSource::internal_SetIsLooping(ScriptAudioSource* thisPtr, bool loop)
  68. {
  69. thisPtr->mSource->setIsLooping(loop);
  70. }
  71. void ScriptAudioSource::internal_SetPriority(ScriptAudioSource* thisPtr, UINT32 priority)
  72. {
  73. thisPtr->mSource->setPriority(priority);
  74. }
  75. void ScriptAudioSource::internal_SetMinDistance(ScriptAudioSource* thisPtr, float distance)
  76. {
  77. thisPtr->mSource->setMinDistance(distance);
  78. }
  79. void ScriptAudioSource::internal_SetAttenuation(ScriptAudioSource* thisPtr, float attenuation)
  80. {
  81. thisPtr->mSource->setAttenuation(attenuation);
  82. }
  83. void ScriptAudioSource::internal_Play(ScriptAudioSource* thisPtr)
  84. {
  85. thisPtr->mSource->play();
  86. }
  87. void ScriptAudioSource::internal_Pause(ScriptAudioSource* thisPtr)
  88. {
  89. thisPtr->mSource->pause();
  90. }
  91. void ScriptAudioSource::internal_Stop(ScriptAudioSource* thisPtr)
  92. {
  93. thisPtr->mSource->stop();
  94. }
  95. void ScriptAudioSource::internal_SetTime(ScriptAudioSource* thisPtr, float position)
  96. {
  97. thisPtr->mSource->setTime(position);
  98. }
  99. float ScriptAudioSource::internal_GetTime(ScriptAudioSource* thisPtr)
  100. {
  101. return thisPtr->mSource->getTime();
  102. }
  103. UINT32 ScriptAudioSource::internal_GetState(ScriptAudioSource* thisPtr)
  104. {
  105. return (UINT32)thisPtr->mSource->getState();
  106. }
  107. }