3
0

MiniAudioPlaybackComponent.cpp 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "MiniAudioPlaybackComponent.h"
  9. #include <AzCore/Asset/AssetSerializer.h>
  10. #include <AzCore/Serialization/EditContext.h>
  11. #include <MiniAudio/SoundAssetRef.h>
  12. namespace MiniAudio
  13. {
  14. AZ::ComponentDescriptor* MiniAudioPlaybackComponent_CreateDescriptor()
  15. {
  16. return MiniAudioPlaybackComponent::CreateDescriptor();
  17. }
  18. AZ::TypeId MiniAudioPlaybackComponent_GetUUID()
  19. {
  20. return azrtti_typeid<MiniAudioPlaybackComponent>();
  21. }
  22. MiniAudioPlaybackComponent::MiniAudioPlaybackComponent(const MiniAudioPlaybackComponentConfig& config)
  23. : BaseClass(config)
  24. {
  25. }
  26. void MiniAudioPlaybackComponent::Reflect(AZ::ReflectContext* context)
  27. {
  28. BaseClass::Reflect(context);
  29. if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
  30. {
  31. serializeContext->Class<MiniAudioPlaybackComponent, BaseClass>()->Version(1);
  32. }
  33. if (auto behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
  34. {
  35. behaviorContext
  36. ->ConstantProperty("MiniAudioPlaybackComponentTypeId", BehaviorConstant(AZ::Uuid(MiniAudioPlaybackComponentTypeId)))
  37. ->Attribute(AZ::Script::Attributes::Module, "MiniAudio")
  38. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common);
  39. AZ::BehaviorParameterOverrides GetVolumeParam = { "Volume", "Get Volume Percent" };
  40. AZ::BehaviorParameterOverrides SetVolumeParam = { "Volume", "Set Volume Percent" };
  41. AZ::BehaviorParameterOverrides GetVolumeDecibelsParam = { "Volume Decibels", "Get Volume Decibels" };
  42. AZ::BehaviorParameterOverrides SetVolumeDecibelsParam = { "Volume Decibels", "Set Volume Decibels" };
  43. AZ::BehaviorParameterOverrides GetInnerConeAngleInRadiansParam = { "Inner Cone Angle In Radians",
  44. "Get Inner Cone Angle In Radians" };
  45. AZ::BehaviorParameterOverrides SetInnerConeAngleInRadiansParam = { "Inner Cone Angle In Radians",
  46. "Set Inner Cone Angle In Radians" };
  47. AZ::BehaviorParameterOverrides GetInnerConeAngleInDegreesParam = { "Inner Cone Angle In Degrees",
  48. "Get Inner Cone Angle In Degrees" };
  49. AZ::BehaviorParameterOverrides SetInnerConeAngleInDegreesParam = { "Inner Cone Angle In Degrees",
  50. "Set Inner Cone Angle In Degrees" };
  51. AZ::BehaviorParameterOverrides GetOuterConeAngleInRadiansParam = { "Outer Cone Angle In Radians",
  52. "Get Outer Cone Angle In Radians" };
  53. AZ::BehaviorParameterOverrides SetOuterConeAngleInRadiansParam = { "Outer Cone Angle In Radians",
  54. "Set Outer Cone Angle In Radians" };
  55. AZ::BehaviorParameterOverrides GetOuterConeAngleInDegreesParam = { "Outer Cone Angle In Degrees",
  56. "Get Outer Cone Angle In Degrees" };
  57. AZ::BehaviorParameterOverrides SetOuterConeAngleInDegreesParam = { "Outer Cone Angle In Degrees",
  58. "Set Outer Cone Angle In Degrees" };
  59. AZ::BehaviorParameterOverrides GetOuterVolumeParam = { "Outer Volume", "Get Volume Percent Outside Outer Cone" };
  60. AZ::BehaviorParameterOverrides SetOuterVolumeParam = { "Outer Volume", "Set Volume Percent Outside Outer Cone" };
  61. AZ::BehaviorParameterOverrides GetOuterVolumeDecibelsParam = { "Outer Volume Decibels",
  62. "Get Volume Decibels Outside Outer Cone" };
  63. AZ::BehaviorParameterOverrides SetOuterVolumeDecibelsParam = { "Outer Volume Decibels",
  64. "Set Volume Decibels Outside Outer Cone" };
  65. AZ::BehaviorParameterOverrides GetFixedDirectionParam = { "Fixed Direction", "Get whether Direction is fixed" };
  66. AZ::BehaviorParameterOverrides SetFixedDirectionParam = { "Fixed Direction", "Set whether Direction is fixed" };
  67. AZ::BehaviorParameterOverrides GetDirectionalAttenuationFactorParam = { "Directional Attenuation Factor",
  68. "Get Directional Attenuation Factor" };
  69. AZ::BehaviorParameterOverrides SetDirectionalAttenuationFactorParam = { "Directional Attenuation Factor",
  70. "Set Directional Attenuation Factor" };
  71. AZ::BehaviorParameterOverrides GetDirectionParam = { "Direction", "Get Playback Direction" };
  72. AZ::BehaviorParameterOverrides SetDirectionParam = { "Direction", "Set Playback Direction" };
  73. behaviorContext->EBus<MiniAudioPlaybackRequestBus>("MiniAudioPlaybackRequestBus")
  74. ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common)
  75. ->Attribute(AZ::Script::Attributes::Module, "audio")
  76. ->Attribute(AZ::Script::Attributes::Category, "MiniAudio Playback")
  77. ->Event("Play", &MiniAudioPlaybackRequests::Play)
  78. ->Event("Stop", &MiniAudioPlaybackRequests::Stop)
  79. ->Event("Pause", &MiniAudioPlaybackRequests::Pause)
  80. ->Event("SetLooping", &MiniAudioPlaybackRequests::SetLooping)
  81. ->Event("IsLooping", &MiniAudioPlaybackRequests::IsLooping)
  82. ->Event("GetSoundAsset", &MiniAudioPlaybackRequests::GetSoundAssetRef)
  83. ->Event("SetSoundAsset", &MiniAudioPlaybackRequests::SetSoundAssetRef)
  84. ->Event("GetVolumePercentage", &MiniAudioPlaybackRequests::GetVolumePercentage, { GetVolumeParam })
  85. ->Event("SetVolumePercentage", &MiniAudioPlaybackRequests::SetVolumePercentage, { SetVolumeParam })
  86. ->Event("GetVolumeDecibels", &MiniAudioPlaybackRequests::GetVolumeDecibels, { GetVolumeDecibelsParam })
  87. ->Event("SetVolumeDecibels", &MiniAudioPlaybackRequests::SetVolumeDecibels, { SetVolumeDecibelsParam })
  88. ->Event(
  89. "GetInnerConeAngleInRadians", &MiniAudioPlaybackRequests::GetInnerAngleInRadians, { GetInnerConeAngleInRadiansParam })
  90. ->Event(
  91. "SetInnerConeAngleInRadians", &MiniAudioPlaybackRequests::SetInnerAngleInRadians, { SetInnerConeAngleInRadiansParam })
  92. ->Event(
  93. "GetInnerConeAngleInDegrees", &MiniAudioPlaybackRequests::GetInnerAngleInDegrees, { GetInnerConeAngleInDegreesParam })
  94. ->Event(
  95. "SetInnerConeAngleInDegrees", &MiniAudioPlaybackRequests::SetInnerAngleInDegrees, { SetInnerConeAngleInDegreesParam })
  96. ->Event(
  97. "GetOuterConeAngleInRadians", &MiniAudioPlaybackRequests::GetOuterAngleInRadians, { GetOuterConeAngleInRadiansParam })
  98. ->Event(
  99. "SetOuterConeAngleInRadians", &MiniAudioPlaybackRequests::SetOuterAngleInRadians, { SetOuterConeAngleInRadiansParam })
  100. ->Event(
  101. "GetOuterConeAngleInDegrees", &MiniAudioPlaybackRequests::GetOuterAngleInDegrees, { GetOuterConeAngleInDegreesParam })
  102. ->Event(
  103. "SetOuterConeAngleInDegrees", &MiniAudioPlaybackRequests::SetOuterAngleInDegrees, { SetOuterConeAngleInDegreesParam })
  104. ->Event("GetOuterVolumePercentage", &MiniAudioPlaybackRequests::GetOuterVolumePercentage, { GetOuterVolumeParam })
  105. ->Event("SetOuterVolumePercentage", &MiniAudioPlaybackRequests::SetOuterVolumePercentage, { SetOuterVolumeParam })
  106. ->Event("GetOuterVolumeDecibels", &MiniAudioPlaybackRequests::GetOuterVolumeDecibels, { GetOuterVolumeDecibelsParam })
  107. ->Event("SetOuterVolumeDecibels", &MiniAudioPlaybackRequests::SetOuterVolumeDecibels, { SetOuterVolumeDecibelsParam })
  108. ->Event("GetFixedDirection", &MiniAudioPlaybackRequests::GetFixedDirecion, { GetFixedDirectionParam })
  109. ->Event("SetFixedDirection", &MiniAudioPlaybackRequests::SetFixedDirecion, { SetFixedDirectionParam })
  110. ->Event(
  111. "GetDirectionalAttenuationFactor",
  112. &MiniAudioPlaybackRequests::GetDirectionalAttenuationFactor,
  113. { GetDirectionalAttenuationFactorParam })
  114. ->Event(
  115. "SetDirectionalAttenuationFactor",
  116. &MiniAudioPlaybackRequests::SetDirectionalAttenuationFactor,
  117. { SetDirectionalAttenuationFactorParam })
  118. ->Event("GetDirection", &MiniAudioPlaybackRequests::GetDirection, { GetDirectionParam })
  119. ->Event("SetDirection", &MiniAudioPlaybackRequests::SetDirection, { SetDirectionParam });
  120. behaviorContext->Class<MiniAudioPlaybackComponentController>()->RequestBus("MiniAudioPlaybackRequestBus");
  121. }
  122. }
  123. } // namespace MiniAudio