Dataswap for observation from old to new data

This commit is contained in:
Noah
2025-05-06 08:46:27 -04:00
parent 022f7dd518
commit b59e320735
2 changed files with 32 additions and 12 deletions

View File

@ -130,9 +130,9 @@ void ULuckyDataTransferSubsystem::SendMessage(const FString& Message)
UE_LOG(LogTemp, Warning, TEXT("WebSocket outgoing message failed"));
}
FPayload ULuckyDataTransferSubsystem::InterpretData(const FString& Message)
FObservationPayload ULuckyDataTransferSubsystem::InterpretData(const FString& Message)
{
FPayload Payload = FPayload();
FObservationPayload Payload = FObservationPayload();
if (!Message.IsEmpty())
{
@ -141,13 +141,33 @@ FPayload ULuckyDataTransferSubsystem::InterpretData(const FString& Message)
if (FJsonSerializer::Deserialize(Reader, JsonObj) && JsonObj.IsValid())
{
for (auto& Elem : JsonObj->Values)
{
FCommand Command = FCommand();
Command.Key = FString(Elem.Key);
Command.Value = Elem.Value->AsNumber();
Payload.type = JsonObj->GetStringField("type");
Payload.request_id = JsonObj->GetStringField("request_id");
Payload.message = JsonObj->GetStringField("message");
Payload.timeStamp = JsonObj->GetStringField("timeStamp");
Payload.Commands.Add(Command);
const TArray<TSharedPtr<FJsonValue>>* StateArray;
if (JsonObj->TryGetArrayField("ObservationState", StateArray))
{
for (const TSharedPtr<FJsonValue>& ObservationValue : *StateArray)
{
TSharedPtr<FJsonObject> ObservationObject = ObservationValue->AsObject();
if (ObservationObject.IsValid())
{
TMap<FString, float> State = TMap<FString, float>();
for (const TPair<FString, TSharedPtr<FJsonValue>>& Pair : ObservationObject->Values)
{
FString Key = Pair.Key;
float Value = Pair.Value->AsNumber();
State.Add(Key, Value);
}
Payload.ObservationState = State;
}
}
}
}
}
@ -161,7 +181,7 @@ void IncomingMessage(const FString& Message)
UE_LOG(LogTemp, Warning, TEXT("Incoming message: %s"), *outMessage);
}
void ULuckyDataTransferSubsystem::CommandReady(const FPayload& Payload)
void ULuckyDataTransferSubsystem::CommandReady(const FObservationPayload& Payload)
{
if (OnCommandReady.IsBound())
{

View File

@ -38,7 +38,7 @@ public:
int32 Index = 0;
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCommandReady, const FPayload&, Payload);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCommandReady, const FObservationPayload&, Payload);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FSocketReady, bool, bSuccessful);
UCLASS()
@ -61,7 +61,7 @@ public:
void Internal_OpenWebsocket(const FString& URL, const FString& Protocol);
FPayload InterpretData(const FString& Message);
FObservationPayload InterpretData(const FString& Message);
UPROPERTY(BlueprintAssignable)
FCommandReady OnCommandReady;
@ -93,7 +93,7 @@ public:
void SendMessage(const FString& Message);
UFUNCTION()
void CommandReady(const FPayload& Payload);
void CommandReady(const FObservationPayload& Payload);
//---Observations (Sent to server from Unreal)--------------//
//Feature Data declarations