ATLEntities_wwise.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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. #pragma once
  9. #include <ATLEntityData.h>
  10. #include <IAudioInterfacesCommonData.h>
  11. #include <AudioAllocators.h>
  12. #include <AzCore/std/containers/map.h>
  13. #include <AzCore/std/containers/vector.h>
  14. #include <AK/SoundEngine/Common/AkTypes.h>
  15. #include <AK/AkWwiseSDKVersion.h>
  16. namespace Audio
  17. {
  18. using TAKUniqueIDVector = AZStd::vector<AkUniqueID, Audio::AudioImplStdAllocator>;
  19. ///////////////////////////////////////////////////////////////////////////////////////////////////
  20. struct SATLAudioObjectData_wwise
  21. : public IATLAudioObjectData
  22. {
  23. // convert to ATLMapLookupType
  24. using TEnvironmentImplMap = AZStd::map<AkAuxBusID, float, AZStd::less<AkAuxBusID>, Audio::AudioImplStdAllocator>;
  25. SATLAudioObjectData_wwise(const AkGameObjectID nPassedAKID, const bool bPassedHasPosition)
  26. : bNeedsToUpdateEnvironments(false)
  27. , bHasPosition(bPassedHasPosition)
  28. , nAKID(nPassedAKID)
  29. {}
  30. ~SATLAudioObjectData_wwise() override {}
  31. bool bNeedsToUpdateEnvironments;
  32. const bool bHasPosition;
  33. const AkGameObjectID nAKID;
  34. TEnvironmentImplMap cEnvironmentImplAmounts;
  35. };
  36. ///////////////////////////////////////////////////////////////////////////////////////////////////
  37. struct SATLListenerData_wwise
  38. : public IATLListenerData
  39. {
  40. explicit SATLListenerData_wwise(const AkGameObjectID passedObjectId)
  41. : nAKListenerObjectId(passedObjectId)
  42. {}
  43. ~SATLListenerData_wwise() override {}
  44. const AkGameObjectID nAKListenerObjectId = AK_INVALID_GAME_OBJECT;
  45. };
  46. ///////////////////////////////////////////////////////////////////////////////////////////////////
  47. struct SATLTriggerImplData_wwise
  48. : public IATLTriggerImplData
  49. {
  50. explicit SATLTriggerImplData_wwise(const AkUniqueID nPassedAKID)
  51. : nAKID(nPassedAKID)
  52. {}
  53. ~SATLTriggerImplData_wwise() override {}
  54. const AkUniqueID nAKID;
  55. };
  56. ///////////////////////////////////////////////////////////////////////////////////////////////////
  57. struct SATLRtpcImplData_wwise
  58. : public IATLRtpcImplData
  59. {
  60. SATLRtpcImplData_wwise(const AkRtpcID nPassedAKID, const float m_fPassedMult, const float m_fPassedShift)
  61. : m_fMult(m_fPassedMult)
  62. , m_fShift(m_fPassedShift)
  63. , nAKID(nPassedAKID)
  64. {}
  65. ~SATLRtpcImplData_wwise() override {}
  66. const float m_fMult;
  67. const float m_fShift;
  68. const AkRtpcID nAKID;
  69. };
  70. ///////////////////////////////////////////////////////////////////////////////////////////////////
  71. enum EWwiseSwitchType : TATLEnumFlagsType
  72. {
  73. eWST_NONE = 0,
  74. eWST_SWITCH = 1,
  75. eWST_STATE = 2,
  76. eWST_RTPC = 3,
  77. };
  78. ///////////////////////////////////////////////////////////////////////////////////////////////////
  79. struct SATLSwitchStateImplData_wwise
  80. : public IATLSwitchStateImplData
  81. {
  82. SATLSwitchStateImplData_wwise(
  83. const EWwiseSwitchType ePassedType,
  84. const AkUInt32 nPassedAKSwitchID,
  85. const AkUInt32 nPassedAKStateID,
  86. const float fPassedRtpcValue = 0.0f)
  87. : eType(ePassedType)
  88. , nAKSwitchID(nPassedAKSwitchID)
  89. , nAKStateID(nPassedAKStateID)
  90. , fRtpcValue(fPassedRtpcValue)
  91. {}
  92. ~SATLSwitchStateImplData_wwise() override {}
  93. const EWwiseSwitchType eType;
  94. const AkUInt32 nAKSwitchID;
  95. const AkUInt32 nAKStateID;
  96. const float fRtpcValue;
  97. };
  98. ///////////////////////////////////////////////////////////////////////////////////////////////////
  99. enum EWwiseAudioEnvironmentType : TATLEnumFlagsType
  100. {
  101. eWAET_NONE = 0,
  102. eWAET_AUX_BUS = 1,
  103. eWAET_RTPC = 2,
  104. };
  105. ///////////////////////////////////////////////////////////////////////////////////////////////////
  106. struct SATLEnvironmentImplData_wwise
  107. : public IATLEnvironmentImplData
  108. {
  109. explicit SATLEnvironmentImplData_wwise(const EWwiseAudioEnvironmentType ePassedType)
  110. : eType(ePassedType)
  111. {}
  112. SATLEnvironmentImplData_wwise(const EWwiseAudioEnvironmentType ePassedType, const AkAuxBusID nPassedAKBusID)
  113. : eType(ePassedType)
  114. , nAKBusID(nPassedAKBusID)
  115. {
  116. AZ_Assert(ePassedType == eWAET_AUX_BUS, "SATLEnvironmentImplData_wwise - type is incorrect, expected an Aux Bus!");
  117. }
  118. SATLEnvironmentImplData_wwise(
  119. const EWwiseAudioEnvironmentType ePassedType,
  120. const AkRtpcID nPassedAKRtpcID,
  121. const float fPassedMult,
  122. const float fPassedShift)
  123. : eType(ePassedType)
  124. , nAKRtpcID(nPassedAKRtpcID)
  125. , fMult(fPassedMult)
  126. , fShift(fPassedShift)
  127. {
  128. AZ_Assert(ePassedType == eWAET_RTPC, "SATLEnvironmentImplData_wwise - type is incorrect, expected an RTPC!");
  129. }
  130. ~SATLEnvironmentImplData_wwise() override {}
  131. const EWwiseAudioEnvironmentType eType;
  132. union
  133. {
  134. // Aux Bus implementation
  135. struct
  136. {
  137. AkAuxBusID nAKBusID;
  138. };
  139. // Rtpc implementation
  140. struct
  141. {
  142. AkRtpcID nAKRtpcID;
  143. float fMult;
  144. float fShift;
  145. };
  146. };
  147. };
  148. ///////////////////////////////////////////////////////////////////////////////////////////////////
  149. struct SATLEventData_wwise
  150. : public IATLEventData
  151. {
  152. explicit SATLEventData_wwise(const TAudioEventID nPassedID)
  153. : audioEventState(eAES_NONE)
  154. , nAKID(AK_INVALID_UNIQUE_ID)
  155. , nATLID(nPassedID)
  156. , nSourceId(INVALID_AUDIO_SOURCE_ID)
  157. {}
  158. ~SATLEventData_wwise() override {}
  159. EAudioEventState audioEventState;
  160. AkUniqueID nAKID;
  161. const TAudioEventID nATLID;
  162. TAudioSourceId nSourceId;
  163. };
  164. ///////////////////////////////////////////////////////////////////////////////////////////////////
  165. struct SATLAudioFileEntryData_wwise
  166. : public IATLAudioFileEntryData
  167. {
  168. SATLAudioFileEntryData_wwise()
  169. : nAKBankID(AK_INVALID_BANK_ID)
  170. {}
  171. ~SATLAudioFileEntryData_wwise() override {}
  172. AkBankID nAKBankID;
  173. };
  174. } // namespace Audio