WwiseAnyRef.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /*******************************************************************************
  2. The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
  3. Technology released in source code form as part of the game integration package.
  4. The content of this file may not be used without valid licenses to the
  5. AUDIOKINETIC Wwise Technology.
  6. Note that the use of the game engine is subject to the Unreal(R) Engine End User
  7. License Agreement at https://www.unrealengine.com/en-US/eula/unreal
  8. License Usage
  9. Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
  10. this file in accordance with the end user license agreement provided with the
  11. software or, alternatively, in accordance with the terms contained
  12. in a written agreement between you and Audiokinetic Inc.
  13. Copyright (c) 2023 Audiokinetic Inc.
  14. *******************************************************************************/
  15. #pragma once
  16. #include "Wwise/Metadata/WwiseMetadataForwardDeclarations.h"
  17. #include "Wwise/Ref/WwiseRefRootFile.h"
  18. #include "Wwise/Ref/WwiseRefType.h"
  19. class WWISEPROJECTDATABASE_API FWwiseAnyRef
  20. {
  21. public:
  22. TSharedPtr<FWwiseRefRootFile> Ref;
  23. template<typename EWwiseRefType>
  24. static FWwiseAnyRef Create(const EWwiseRefType& inRef)
  25. {
  26. return FWwiseAnyRef(new EWwiseRefType(inRef));
  27. }
  28. FWwiseAnyRef() :
  29. Ref()
  30. {}
  31. FWwiseAnyRef(FWwiseAnyRef&& InRef) :
  32. Ref(MoveTemp(InRef.Ref))
  33. {}
  34. FWwiseAnyRef(const FWwiseAnyRef& InRef) :
  35. Ref(InRef.Ref)
  36. {}
  37. private:
  38. FWwiseAnyRef(FWwiseRefRootFile*&& InRef) :
  39. Ref(InRef)
  40. {
  41. }
  42. public:
  43. ~FWwiseAnyRef()
  44. {
  45. }
  46. EWwiseRefType GetType() const
  47. {
  48. if (!Ref)
  49. {
  50. return EWwiseRefType::None;
  51. }
  52. return (EWwiseRefType)Ref->Type();
  53. }
  54. operator bool() const { return Ref != nullptr; }
  55. bool IsValid() const { return Ref != nullptr; }
  56. const FWwiseRefLanguage* GetLanguageRef() const;
  57. const FWwiseRefPlatform* GetPlatformRef() const;
  58. const FWwiseRefPluginLib* GetPluginLibRef() const;
  59. const FWwiseRefSoundBank* GetSoundBankRef() const;
  60. const FWwiseRefMedia* GetMediaRef() const;
  61. const FWwiseRefCustomPlugin* GetCustomPluginRef() const;
  62. const FWwiseRefPluginShareSet* GetPluginShareSetRef() const;
  63. const FWwiseRefAudioDevice* GetAudioDeviceRef() const;
  64. const FWwiseRefEvent* GetEventRef() const;
  65. const FWwiseRefSwitchContainer* GetSwitchContainerRef() const;
  66. const FWwiseRefDialogueEvent* GetDialogueEventRef() const;
  67. const FWwiseRefDialogueArgument* GetDialogueArgumentRef() const;
  68. const FWwiseRefBus* GetBusRef() const;
  69. const FWwiseRefAuxBus* GetAuxBusRef() const;
  70. const FWwiseRefGameParameter* GetGameParameterRef() const;
  71. const FWwiseRefStateGroup* GetStateGroupRef() const;
  72. const FWwiseRefState* GetStateRef() const;
  73. const FWwiseRefSwitchGroup* GetSwitchGroupRef() const;
  74. const FWwiseRefSwitch* GetSwitchRef() const;
  75. const FWwiseRefTrigger* GetTriggerRef() const;
  76. const FWwiseRefExternalSource* GetExternalSourceRef() const;
  77. const FWwiseRefAcousticTexture* GetAcousticTextureRef() const;
  78. const FWwiseMetadataLanguage* GetLanguage() const;
  79. const FWwiseMetadataPlatform* GetPlatform() const;
  80. const FWwiseMetadataPlatformReference* GetPlatformReference() const;
  81. const FWwiseMetadataPluginLib* GetPluginLib() const;
  82. const FWwiseMetadataSoundBank* GetSoundBank() const;
  83. const FWwiseMetadataMedia* GetMedia() const;
  84. const FWwiseMetadataPlugin* GetCustomPlugin() const;
  85. const FWwiseMetadataPlugin* GetPluginShareSet() const;
  86. const FWwiseMetadataPlugin* GetAudioDevice() const;
  87. const FWwiseMetadataEvent* GetEvent() const;
  88. const FWwiseMetadataSwitchContainer* GetSwitchContainer() const;
  89. const FWwiseMetadataDialogueEvent* GetDialogueEvent() const;
  90. const FWwiseMetadataDialogueArgument* GetDialogueArgument() const;
  91. const FWwiseMetadataBus* GetBus() const;
  92. const FWwiseMetadataBus* GetAuxBus() const;
  93. const FWwiseMetadataGameParameter* GetGameParameter() const;
  94. const FWwiseMetadataStateGroup* GetStateGroup() const;
  95. const FWwiseMetadataState* GetState() const;
  96. const FWwiseMetadataSwitchGroup* GetSwitchGroup() const;
  97. const FWwiseMetadataSwitch* GetSwitch() const;
  98. const FWwiseMetadataTrigger* GetTrigger() const;
  99. const FWwiseMetadataExternalSource* GetExternalSource() const;
  100. const FWwiseMetadataAcousticTexture* GetAcousticTexture() const;
  101. bool GetRef(FWwiseRefLanguage& OutRef) const;
  102. bool GetRef(FWwiseRefPlatform& OutRef) const;
  103. bool GetRef(FWwiseRefPluginLib& OutRef) const;
  104. bool GetRef(FWwiseRefSoundBank& OutRef) const;
  105. bool GetRef(FWwiseRefMedia& OutRef) const;
  106. bool GetRef(FWwiseRefCustomPlugin& OutRef) const;
  107. bool GetRef(FWwiseRefPluginShareSet& OutRef) const;
  108. bool GetRef(FWwiseRefAudioDevice& OutRef) const;
  109. bool GetRef(FWwiseRefEvent& OutRef) const;
  110. bool GetRef(FWwiseRefSwitchContainer& OutRef) const;
  111. bool GetRef(FWwiseRefDialogueEvent& OutRef) const;
  112. bool GetRef(FWwiseRefDialogueArgument& OutRef) const;
  113. bool GetRef(FWwiseRefBus& OutRef) const;
  114. bool GetRef(FWwiseRefAuxBus& OutRef) const;
  115. bool GetRef(FWwiseRefGameParameter& OutRef) const;
  116. bool GetRef(FWwiseRefStateGroup& OutRef) const;
  117. bool GetRef(FWwiseRefState& OutRef) const;
  118. bool GetRef(FWwiseRefSwitchGroup& OutRef) const;
  119. bool GetRef(FWwiseRefSwitch& OutRef) const;
  120. bool GetRef(FWwiseRefTrigger& OutRef) const;
  121. bool GetRef(FWwiseRefExternalSource& OutRef) const;
  122. bool GetRef(FWwiseRefAcousticTexture& OutRef) const;
  123. FGuid GetGuid(const EWwiseRefType* TypeOverride = nullptr) const;
  124. uint32 GetGroupId(const EWwiseRefType* TypeOverride = nullptr) const;
  125. uint32 GetId(const EWwiseRefType* TypeOverride = nullptr) const;
  126. FName GetName(const EWwiseRefType* TypeOverride = nullptr) const;
  127. FName GetObjectPath(const EWwiseRefType* TypeOverride = nullptr) const;
  128. bool operator ==(const FWwiseAnyRef& Rhs) const
  129. {
  130. return GetType() == Rhs.GetType()
  131. && operator bool() == Rhs.operator bool()
  132. && (!operator bool()
  133. || Ref->Hash() == Rhs.Ref->Hash());
  134. }
  135. bool operator !=(const FWwiseAnyRef& Rhs) const
  136. {
  137. return !(operator == (Rhs));
  138. }
  139. };
  140. inline uint32 GetTypeHash(const FWwiseAnyRef& InValue)
  141. {
  142. if ((bool)InValue)
  143. {
  144. return InValue.Ref->Hash();
  145. }
  146. return 0;
  147. }