1 Commits

Author SHA1 Message Date
b59e320735 Dataswap for observation from old to new data 2025-05-06 08:46:27 -04:00
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")); 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()) if (!Message.IsEmpty())
{ {
@ -141,13 +141,33 @@ FPayload ULuckyDataTransferSubsystem::InterpretData(const FString& Message)
if (FJsonSerializer::Deserialize(Reader, JsonObj) && JsonObj.IsValid()) if (FJsonSerializer::Deserialize(Reader, JsonObj) && JsonObj.IsValid())
{ {
for (auto& Elem : JsonObj->Values) Payload.type = JsonObj->GetStringField("type");
{ Payload.request_id = JsonObj->GetStringField("request_id");
FCommand Command = FCommand(); Payload.message = JsonObj->GetStringField("message");
Command.Key = FString(Elem.Key); Payload.timeStamp = JsonObj->GetStringField("timeStamp");
Command.Value = Elem.Value->AsNumber();
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); UE_LOG(LogTemp, Warning, TEXT("Incoming message: %s"), *outMessage);
} }
void ULuckyDataTransferSubsystem::CommandReady(const FPayload& Payload) void ULuckyDataTransferSubsystem::CommandReady(const FObservationPayload& Payload)
{ {
if (OnCommandReady.IsBound()) if (OnCommandReady.IsBound())
{ {

View File

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