Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
  • Loading branch information
getnamo committed Dec 5, 2024
2 parents 078f333 + 512fa66 commit 3103604
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 15 deletions.
2 changes: 1 addition & 1 deletion SocketIOClient.uplugin
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "2.8.3",
"VersionName": "2.8.5",
"EngineVersion": "5.5",
"FriendlyName": "Socket.IO Client",
"Description": "Real-time WebSocket networking via Socket.IO protocol usable from blueprints and c++.",
Expand Down
4 changes: 3 additions & 1 deletion Source/CoreUtility/Public/CUOpusCoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

#include "CoreMinimal.h"

#define WITH_OPUS (PLATFORM_WINDOWS || PLATFORM_UNIX || PLATFORM_ANDROID)
#ifndef WITH_OPUS
#define WITH_OPUS (PLATFORM_WINDOWS || PLATFORM_UNIX || PLATFORM_ANDROID)
#endif

#if WITH_OPUS
#include "ThirdParty/libOpus/opus-1.1/include/opus.h"
Expand Down
42 changes: 29 additions & 13 deletions Source/SIOJson/Private/SIOJConvert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -835,36 +835,52 @@ bool USIOJConvert::JsonObjectToUStruct(TSharedPtr<FJsonObject> JsonObject, UStru
bool USIOJConvert::JsonFileToUStruct(const FString& FilePath, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct /*= false*/)
{
//Read bytes from file
TArray<uint8> OutBytes;
if (!FFileHelper::LoadFileToArray(OutBytes, *FilePath))
TArray<uint8> ReadBytes;
if (!FFileHelper::LoadFileToArray(ReadBytes, *FilePath))
{
return false;
}

//Convert to json string
FString JsonString;
FFileHelper::BufferToString(JsonString, OutBytes.GetData(), OutBytes.Num());

//Read into struct
return JsonObjectToUStruct(ToJsonObject(JsonString), Struct, StructPtr, IsBlueprintStruct);
return BytesToStruct(ReadBytes, Struct, StructPtr, IsBlueprintStruct);
}

bool USIOJConvert::ToJsonFile(const FString& FilePath, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct /*= false*/)
{
TArray<uint8> Bytes;
StructToBytes(Struct, StructPtr, Bytes, IsBlueprintStruct);

//flush to disk
return FFileHelper::SaveArrayToFile(Bytes, *FilePath);
}

bool USIOJConvert::StructToBytes(UStruct* Struct, void* StructPtr, TArray<uint8>& OutBytes, bool IsBlueprintStruct)
{
//Get json object with trimmed values
TSharedPtr<FJsonObject> JsonObject = ToJsonObject(Struct, StructPtr, IsBlueprintStruct);
TSharedPtr<FJsonValue> TrimmedValue = MakeShareable(new FJsonValueObject(JsonObject));
TrimValueKeyNames(TrimmedValue);

if (IsBlueprintStruct)
{
TrimValueKeyNames(TrimmedValue);
}

//Convert to string
FString JsonString = ToJsonString(TrimmedValue);
FTCHARToUTF8 Utf8String(*JsonString);

TArray<uint8> Bytes;
Bytes.Append((uint8*)Utf8String.Get(), Utf8String.Length());
OutBytes.Append((uint8*)Utf8String.Get(), Utf8String.Length());

//flush to disk
return FFileHelper::SaveArrayToFile(Bytes, *FilePath);
return true;
}

bool USIOJConvert::BytesToStruct(const TArray<uint8>& InBytes, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct)
{
//Convert to json string
FString JsonString;
FFileHelper::BufferToString(JsonString, InBytes.GetData(), InBytes.Num());

//Read into struct
return JsonObjectToUStruct(ToJsonObject(JsonString), Struct, StructPtr, IsBlueprintStruct);
}

void USIOJConvert::TrimValueKeyNames(const TSharedPtr<FJsonValue>& JsonValue)
Expand Down
3 changes: 3 additions & 0 deletions Source/SIOJson/Public/SIOJConvert.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ class SIOJSON_API USIOJConvert : public UObject
static bool JsonFileToUStruct(const FString& FilePath, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct = false);
static bool ToJsonFile(const FString& FilePath, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct = false);

static bool StructToBytes(UStruct* Struct, void* StructPtr, TArray<uint8>& OutBytes, bool IsBlueprintStruct = false);
static bool BytesToStruct(const TArray<uint8>& InBytes, UStruct* Struct, void* StructPtr, bool IsBlueprintStruct = false);

//typically from callbacks
static class USIOJsonValue* ToSIOJsonValue(const TArray<TSharedPtr<FJsonValue>>& JsonValueArray);

Expand Down

0 comments on commit 3103604

Please sign in to comment.