AkWaapiJsonManager.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. /*=============================================================================
  16. AkAudioClasses.cpp:
  17. =============================================================================*/
  18. #include "AkWaapiBlueprints/AkWaapiJsonManager.h"
  19. #include "AkAudioDevice.h"
  20. #include "EngineUtils.h"
  21. #include "Model.h"
  22. #include "UObject/UObjectIterator.h"
  23. #include "Engine/GameEngine.h"
  24. #include "AkWaapiClient.h"
  25. /*-----------------------------------------------------------------------------
  26. AkWaapiJsonManager.
  27. -----------------------------------------------------------------------------*/
  28. UAkWaapiJsonManager::UAkWaapiJsonManager(const class FObjectInitializer& ObjectInitializer)
  29. : Super(ObjectInitializer)
  30. {
  31. // Property initialization
  32. }
  33. FAKWaapiJsonObject UAkWaapiJsonManager::SetStringField(const FAkWaapiFieldNames& FieldName, const FString& FieldValue, FAKWaapiJsonObject target)
  34. {
  35. if (!FieldName.FieldName.IsEmpty() && !FieldValue.IsEmpty() && target.WaapiJsonObj.IsValid())
  36. {
  37. target.WaapiJsonObj->SetStringField(FieldName.FieldName, FieldValue);
  38. }
  39. return target;
  40. }
  41. FAKWaapiJsonObject UAkWaapiJsonManager::SetBoolField(const FAkWaapiFieldNames& FieldName, bool FieldValue, FAKWaapiJsonObject target)
  42. {
  43. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  44. {
  45. target.WaapiJsonObj->SetBoolField(FieldName.FieldName, FieldValue);
  46. }
  47. return target;
  48. }
  49. FAKWaapiJsonObject UAkWaapiJsonManager::SetNumberField(const FAkWaapiFieldNames& FieldName, float FieldValue, FAKWaapiJsonObject target)
  50. {
  51. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  52. {
  53. target.WaapiJsonObj->SetNumberField(FieldName.FieldName, FieldValue);
  54. }
  55. return target;
  56. }
  57. FAKWaapiJsonObject UAkWaapiJsonManager::SetObjectField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject FieldValue, FAKWaapiJsonObject target)
  58. {
  59. if (!FieldName.FieldName.IsEmpty() && FieldValue.WaapiJsonObj.IsValid() && target.WaapiJsonObj.IsValid())
  60. {
  61. target.WaapiJsonObj->SetObjectField(FieldName.FieldName, FieldValue.WaapiJsonObj);
  62. }
  63. return target;
  64. }
  65. FAKWaapiJsonObject UAkWaapiJsonManager::SetArrayStringFields(const FAkWaapiFieldNames& FieldName, const TArray< FString >& FieldStringValues, FAKWaapiJsonObject target)
  66. {
  67. if (!FieldName.FieldName.IsEmpty() && FieldStringValues.Num() && target.WaapiJsonObj.IsValid())
  68. {
  69. TArray<TSharedPtr<FJsonValue>> JsonArray;
  70. for (FString Field : FieldStringValues)
  71. {
  72. JsonArray.Add(MakeShareable(new FJsonValueString(Field)));
  73. }
  74. target.WaapiJsonObj->SetArrayField(FieldName.FieldName, JsonArray);
  75. }
  76. return target;
  77. }
  78. FAKWaapiJsonObject UAkWaapiJsonManager::SetArrayObjectFields(const FAkWaapiFieldNames& FieldName, const TArray< FAKWaapiJsonObject >& FieldObjectValues, FAKWaapiJsonObject target)
  79. {
  80. if (!FieldName.FieldName.IsEmpty() && FieldObjectValues.Num() && target.WaapiJsonObj.IsValid())
  81. {
  82. TArray<TSharedPtr<FJsonValue>> JsonArray;
  83. for (FAKWaapiJsonObject Field : FieldObjectValues)
  84. {
  85. if (Field.WaapiJsonObj.IsValid())
  86. {
  87. JsonArray.Add(MakeShareable(new FJsonValueObject(Field.WaapiJsonObj)));
  88. }
  89. }
  90. target.WaapiJsonObj->SetArrayField(FieldName.FieldName, JsonArray);
  91. }
  92. return target;
  93. }
  94. FString UAkWaapiJsonManager::GetStringField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  95. {
  96. FString result;
  97. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  98. {
  99. target.WaapiJsonObj->TryGetStringField(FieldName.FieldName, result);
  100. }
  101. return result;
  102. }
  103. bool UAkWaapiJsonManager::GetBoolField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  104. {
  105. bool result = true;
  106. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  107. {
  108. target.WaapiJsonObj->TryGetBoolField(FieldName.FieldName, result);
  109. }
  110. return result;
  111. }
  112. float UAkWaapiJsonManager::GetNumberField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  113. {
  114. double result = TNumericLimits<float>::Min();
  115. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  116. {
  117. target.WaapiJsonObj->TryGetNumberField(FieldName.FieldName, result);
  118. }
  119. return result;
  120. }
  121. int32 UAkWaapiJsonManager::GetIntegerField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  122. {
  123. int32 result = INT32_MIN;
  124. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  125. {
  126. target.WaapiJsonObj->TryGetNumberField(FieldName.FieldName, result);
  127. }
  128. return result;
  129. }
  130. FAKWaapiJsonObject UAkWaapiJsonManager::GetObjectField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  131. {
  132. FAKWaapiJsonObject outResult = FAKWaapiJsonObject();
  133. const TSharedPtr<FJsonObject> *outJsonResult = nullptr;
  134. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  135. {
  136. outResult.WaapiJsonObj = target.WaapiJsonObj->GetObjectField(FieldName.FieldName);
  137. }
  138. return outResult;
  139. }
  140. const TArray<FAKWaapiJsonObject > UAkWaapiJsonManager::GetArrayField(const FAkWaapiFieldNames& FieldName, FAKWaapiJsonObject target)
  141. {
  142. TArray<FAKWaapiJsonObject> WaapiJsonArrayResult;
  143. if (!FieldName.FieldName.IsEmpty() && target.WaapiJsonObj.IsValid())
  144. {
  145. TArray<TSharedPtr<FJsonValue>> JsonArray = target.WaapiJsonObj->GetArrayField(FieldName.FieldName);
  146. for (TSharedPtr<FJsonValue> JObj : JsonArray)
  147. {
  148. FAKWaapiJsonObject WaapiJsonObj = FAKWaapiJsonObject();
  149. WaapiJsonObj.WaapiJsonObj = JObj->AsObject();
  150. WaapiJsonArrayResult.Add(WaapiJsonObj);
  151. }
  152. }
  153. return WaapiJsonArrayResult;
  154. }
  155. FString UAkWaapiJsonManager::Conv_FAKWaapiJsonObjectToString(FAKWaapiJsonObject INAKWaapiJsonObject)
  156. {
  157. FString ResultAsString;
  158. FAkWaapiClient::JsonObjectToString(INAKWaapiJsonObject.WaapiJsonObj.ToSharedRef(), ResultAsString);
  159. return ResultAsString;
  160. }
  161. FText UAkWaapiJsonManager::Conv_FAKWaapiJsonObjectToText(FAKWaapiJsonObject INAKWaapiJsonObject)
  162. {
  163. return FText::FromString(*Conv_FAKWaapiJsonObjectToString(INAKWaapiJsonObject));
  164. }