diff --git a/Content/Blueprint/Core/BP_3DtextHelp.uasset b/Content/Blueprint/Core/BP_3DtextHelp.uasset index fef43069..2e1479b1 100644 Binary files a/Content/Blueprint/Core/BP_3DtextHelp.uasset and b/Content/Blueprint/Core/BP_3DtextHelp.uasset differ diff --git a/Content/Blueprint/Game/BP_LuckyGameState.uasset b/Content/Blueprint/Game/BP_LuckyGameState.uasset index 38572b2e..2180cd9d 100644 Binary files a/Content/Blueprint/Game/BP_LuckyGameState.uasset and b/Content/Blueprint/Game/BP_LuckyGameState.uasset differ diff --git a/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset b/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset index c8578e1d..d5a73623 100644 Binary files a/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset and b/Content/Blueprint/Game/BP_LuckyGameinstanceMode.uasset differ diff --git a/Content/Blueprint/Game/BP_LuckyRobots.uasset b/Content/Blueprint/Game/BP_LuckyRobots.uasset index c0d2557d..babc2f75 100644 Binary files a/Content/Blueprint/Game/BP_LuckyRobots.uasset and b/Content/Blueprint/Game/BP_LuckyRobots.uasset differ diff --git a/Content/Blueprint/Game/BP_SelectScreen.uasset b/Content/Blueprint/Game/BP_SelectScreen.uasset deleted file mode 100644 index be70ac04..00000000 Binary files a/Content/Blueprint/Game/BP_SelectScreen.uasset and /dev/null differ diff --git a/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset b/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset index 5a72e633..2e6f3df7 100644 Binary files a/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset and b/Content/Blueprint/RobotPawnActors/BP_mujokoStretch.uasset differ diff --git a/Content/GameBP/BP_LobbyGameMode.uasset b/Content/GameBP/BP_LobbyGameMode.uasset index bc283f10..d5711a3a 100644 Binary files a/Content/GameBP/BP_LobbyGameMode.uasset and b/Content/GameBP/BP_LobbyGameMode.uasset differ diff --git a/Content/GameBP/BP_LuckyRobotsPlayerController.uasset b/Content/GameBP/BP_LuckyRobotsPlayerController.uasset new file mode 100644 index 00000000..22c215c2 Binary files /dev/null and b/Content/GameBP/BP_LuckyRobotsPlayerController.uasset differ diff --git a/Content/Map/simpleTestMap.umap b/Content/Map/simpleTestMap.umap index 0fb9b250..e48519a7 100644 Binary files a/Content/Map/simpleTestMap.umap and b/Content/Map/simpleTestMap.umap differ diff --git a/Content/luckyBot/Luckywidget/WB_AddModelScreen.uasset b/Content/luckyBot/Luckywidget/WB_AddModelScreen.uasset index 92a6222e..9ec16611 100644 Binary files a/Content/luckyBot/Luckywidget/WB_AddModelScreen.uasset and b/Content/luckyBot/Luckywidget/WB_AddModelScreen.uasset differ diff --git a/Content/luckyBot/Luckywidget/WB_GameWidget.uasset b/Content/luckyBot/Luckywidget/WB_GameWidget.uasset index 710213cd..239d0fa5 100644 Binary files a/Content/luckyBot/Luckywidget/WB_GameWidget.uasset and b/Content/luckyBot/Luckywidget/WB_GameWidget.uasset differ diff --git a/Content/luckyBot/Luckywidget/WB_MainScreen.uasset b/Content/luckyBot/Luckywidget/WB_MainScreen.uasset index 28be5a37..f4c1e9fe 100644 Binary files a/Content/luckyBot/Luckywidget/WB_MainScreen.uasset and b/Content/luckyBot/Luckywidget/WB_MainScreen.uasset differ diff --git a/Source/Luckyrobots/Luckyrobots.Build.cs b/Source/Luckyrobots/Luckyrobots.Build.cs index a8ddfca7..b7a16901 100644 --- a/Source/Luckyrobots/Luckyrobots.Build.cs +++ b/Source/Luckyrobots/Luckyrobots.Build.cs @@ -17,8 +17,9 @@ public class Luckyrobots : ModuleRules "LuckyMujoco", "LuckyTextWrite", "SocketIOClient", - "VaRest" - }); + "VaRest", + "SIOJson" + }); PrivateDependencyModuleNames.AddRange(new string[] { }); diff --git a/Source/Luckyrobots/Private/LobbyGameMode.cpp b/Source/Luckyrobots/Private/LobbyGameMode.cpp index 9e3b6e73..c2942b1a 100644 --- a/Source/Luckyrobots/Private/LobbyGameMode.cpp +++ b/Source/Luckyrobots/Private/LobbyGameMode.cpp @@ -2,4 +2,11 @@ #include "LobbyGameMode.h" +#include "LuckyRobotsFunctionLibrary.h" +void ALobbyGameMode::BeginPlay() +{ + Super::BeginPlay(); + + ULuckyRobotsFunctionLibrary::UpdateQualitySettings(this); +} \ No newline at end of file diff --git a/Source/Luckyrobots/Private/LuckyRobotsFunctionLibrary.cpp b/Source/Luckyrobots/Private/LuckyRobotsFunctionLibrary.cpp new file mode 100644 index 00000000..3a574c33 --- /dev/null +++ b/Source/Luckyrobots/Private/LuckyRobotsFunctionLibrary.cpp @@ -0,0 +1,79 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "LuckyRobotsFunctionLibrary.h" +#include "LuckyRobotsGameInstance.h" +#include "GameFramework/GameUserSettings.h" + +ULuckyRobotsGameInstance* ULuckyRobotsFunctionLibrary::GetLuckyRobotsGameInstance(const UObject* WorldContextObject) +{ + return Cast(WorldContextObject->GetWorld()->GetGameInstance()); +} + +TArray ULuckyRobotsFunctionLibrary::GetActiveRobotDataList(const UObject* WorldContextObject) +{ + TArray RobotDataList; + ULuckyRobotsGameInstance* LuckyRobotsGameInstance = GetLuckyRobotsGameInstance(WorldContextObject); + if (LuckyRobotsGameInstance) + { + if (LuckyRobotsGameInstance->RobotDataDataTable) + { + FString ContextString; + TArray RowNames = LuckyRobotsGameInstance->RobotDataDataTable->GetRowNames(); + for (auto RowString : RowNames) + { + FRobotData* pRow = LuckyRobotsGameInstance->RobotDataDataTable->FindRow(FName(RowString), ContextString); + if (pRow) + { + if (pRow->bActive) + { + RobotDataList.Add(*pRow); + } + } + } + } + } + return RobotDataList; +} + +TArray ULuckyRobotsFunctionLibrary::GetActiveLevelDataList(const UObject* WorldContextObject) +{ + TArray LevelDataList; + ULuckyRobotsGameInstance* LuckyRobotsGameInstance = GetLuckyRobotsGameInstance(WorldContextObject); + if (LuckyRobotsGameInstance) + { + if (LuckyRobotsGameInstance->LevelDataTable) + { + FString ContextString; + TArray RowNames = LuckyRobotsGameInstance->LevelDataTable->GetRowNames(); + for (auto RowString : RowNames) + { + FLevelData* pRow = LuckyRobotsGameInstance->LevelDataTable->FindRow(FName(RowString), ContextString); + if (pRow) + { + if (pRow->bActive) + { + LevelDataList.Add(*pRow); + } + } + } + } + } + return LevelDataList; +} + +void ULuckyRobotsFunctionLibrary::UpdateQualitySettings(const UObject* WorldContextObject) +{ + ULuckyRobotsGameInstance* LuckyRobotsGameInstance = GetLuckyRobotsGameInstance(WorldContextObject); + if (LuckyRobotsGameInstance) + { + // Load game user settings and apply + UGameUserSettings* GameUserSettings = GEngine->GetGameUserSettings(); + if (GameUserSettings) + { + GameUserSettings->SetOverallScalabilityLevel(int(LuckyRobotsGameInstance->CurrentSelectQuality)); + GameUserSettings->SaveSettings(); + GameUserSettings->ApplySettings(true); + } + } +} \ No newline at end of file diff --git a/Source/Luckyrobots/Private/LuckyRobotsGameMode.cpp b/Source/Luckyrobots/Private/LuckyRobotsGameMode.cpp index 4eea9db1..6d7577a4 100644 --- a/Source/Luckyrobots/Private/LuckyRobotsGameMode.cpp +++ b/Source/Luckyrobots/Private/LuckyRobotsGameMode.cpp @@ -2,4 +2,39 @@ #include "LuckyRobotsGameMode.h" +#include "LuckyRobotsGameInstance.h" +#include "LuckyRobotsFunctionLibrary.h" + +void ALuckyRobotsGameMode::BeginPlay() +{ + Super::BeginPlay(); + + ULuckyRobotsFunctionLibrary::UpdateQualitySettings(this); +} + +UClass* ALuckyRobotsGameMode::GetDefaultPawnClassForController_Implementation(AController* InController) +{ + UClass* RobotClass = Super::GetDefaultPawnClassForController_Implementation(InController); + + ERobotsName CurrentRobot = ERobotsName::None; + ULuckyRobotsGameInstance* LuckyRobotsGameInstance = Cast(GetGameInstance()); + if (LuckyRobotsGameInstance) + { + CurrentRobot = LuckyRobotsGameInstance->CurrentSelectRobot; + } + if (CurrentRobot != ERobotsName::None) + { + TArray ActiveRobotDataList = ULuckyRobotsFunctionLibrary::GetActiveRobotDataList(this); + for (auto ActiveRobotData : ActiveRobotDataList) + { + if (ActiveRobotData.Name == CurrentRobot) + { + RobotClass = ActiveRobotData.RobotClass; + break; + } + } + } + + return RobotClass; +} diff --git a/Source/Luckyrobots/Private/LuckyRobotsGameState.cpp b/Source/Luckyrobots/Private/LuckyRobotsGameState.cpp index 4f88339c..bb4e6587 100644 --- a/Source/Luckyrobots/Private/LuckyRobotsGameState.cpp +++ b/Source/Luckyrobots/Private/LuckyRobotsGameState.cpp @@ -2,4 +2,54 @@ #include "LuckyRobotsGameState.h" +#include "SocketIOClientComponent.h" +#include "LuckyRobotsFunctionLibrary.h" +#include "LuckyRobotsGameInstance.h" +ALuckyRobotsGameState::ALuckyRobotsGameState() +{ + SocketIOClientComponent = CreateDefaultSubobject(TEXT("SocketIOClientComponent")); +} + +void ALuckyRobotsGameState::BeginPlay() +{ + Super::BeginPlay(); + + if (SocketIOClientComponent) + { + SocketIOClientComponent->Connect(L"http://localhost:3000/"); + } +} + +void ALuckyRobotsGameState::DoSendMessage(FString SendValue) +{ + if (SocketIOClientComponent) + { + if (SocketIOClientComponent->bIsConnected) + { + USIOJsonValue* SIOJsonValue = USIOJsonValue::ConstructJsonValueString(this, SendValue); + SocketIOClientComponent->Emit("message", SIOJsonValue); + } + } +} + + +void ALuckyRobotsGameState::DoSocketOnConnect(FString SocketId, FString SessionId, bool IsReconnection) +{ + if (SocketIOClientComponent) + { + if (SocketIOClientComponent->bIsConnected) + { + SocketIOClientComponent->BindEventToGenericEvent("response"); + } + } +} + +void ALuckyRobotsGameState::DoSocketOnGenericEvent(FString EventName, USIOJsonValue* EventData) +{ + ULuckyRobotsGameInstance* LuckyRobotsGameInstance = ULuckyRobotsFunctionLibrary::GetLuckyRobotsGameInstance(this); + if (LuckyRobotsGameInstance) + { + LuckyRobotsGameInstance->DoGetDispatch(EventName, EventData); + } +} \ No newline at end of file diff --git a/Source/Luckyrobots/Private/MainScreenUserWidget.cpp b/Source/Luckyrobots/Private/MainScreenUserWidget.cpp index 93ca25e8..c06c7dec 100644 --- a/Source/Luckyrobots/Private/MainScreenUserWidget.cpp +++ b/Source/Luckyrobots/Private/MainScreenUserWidget.cpp @@ -4,6 +4,7 @@ #include "MainScreenUserWidget.h" #include "Engine/DataTable.h" #include "LuckyRobotsGameInstance.h" +#include "LuckyRobotsFunctionLibrary.h" void UMainScreenUserWidget::NativeConstruct() { @@ -20,38 +21,13 @@ void UMainScreenUserWidget::InitData() ULuckyRobotsGameInstance* LuckyRobotsGameInstance = Cast(GetGameInstance()); if (LuckyRobotsGameInstance) { - UEnum* QualityEnum = StaticEnum(); - for (int32 i = 0; i < QualityEnum->NumEnums() - 1; i++) - { - if (EQualityEnum(QualityEnum->GetValueByIndex(i)) == LuckyRobotsGameInstance->CurrentSelectQuality) - { - iCurrentSelectRobot = i; - break; - } - } + iCurrentSelectQuality = int(LuckyRobotsGameInstance->CurrentSelectQuality); } } void UMainScreenUserWidget::InitRobotData() { - if (RobotDataDataTable) - { - RobotDataList.Empty(); - - FString ContextString; - TArray RowNames = RobotDataDataTable->GetRowNames(); - for (auto RowString : RowNames) - { - FRobotData* pRow = RobotDataDataTable->FindRow(FName(RowString), ContextString); - if (pRow) - { - if (pRow->bActive) - { - RobotDataList.Add(*pRow); - } - } - } - } + RobotDataList = ULuckyRobotsFunctionLibrary::GetActiveRobotDataList(this); iCurrentSelectRobot = 0; UpdateSelectRobot(); @@ -59,49 +35,19 @@ void UMainScreenUserWidget::InitRobotData() void UMainScreenUserWidget::InitLevelData() { + LevelDataList = ULuckyRobotsFunctionLibrary::GetActiveLevelDataList(this); + FRobotData CurrentRobotData = GetCurrentRobotData(); if (CurrentRobotData.Name != ERobotsName::None) { - if (LevelDataTable) - { - LevelDataList.Empty(); + TArray ActiveLevelDataList = LevelDataList; - FString ContextString; - TArray RowNames = LevelDataTable->GetRowNames(); - for (auto RowString : RowNames) - { - FLevelData* pRow = LevelDataTable->FindRow(FName(RowString), ContextString); - if (pRow) - { - if (pRow->bActive) - { - if (pRow->RobotTypeList.Find(CurrentRobotData.RobotType) >= 0) - { - LevelDataList.Add(*pRow); - } - } - } - } - } - } - else - { - if (LevelDataTable) + LevelDataList.Empty(); + for (auto ActiveLevelData : ActiveLevelDataList) { - LevelDataList.Empty(); - - FString ContextString; - TArray RowNames = LevelDataTable->GetRowNames(); - for (auto RowString : RowNames) + if (ActiveLevelData.RobotTypeList.Find(CurrentRobotData.RobotType) >= 0) { - FLevelData* pRow = LevelDataTable->FindRow(FName(RowString), ContextString); - if (pRow) - { - if (pRow->bActive) - { - LevelDataList.Add(*pRow); - } - } + LevelDataList.Add(ActiveLevelData); } } } @@ -158,7 +104,7 @@ void UMainScreenUserWidget::SelectNextQuality() { UEnum* QualityEnum = StaticEnum(); int QualityEnumNum = QualityEnum->NumEnums() - 1; - iCurrentSelectQuality = FMath::Clamp(iCurrentSelectQuality + 1, 0, QualityEnumNum - 1); + iCurrentSelectQuality = FMath::Clamp(iCurrentSelectQuality - 1, 0, QualityEnumNum - 1); UpdateSelectQuality(); } @@ -167,7 +113,7 @@ void UMainScreenUserWidget::SelectPreviousQuality() { UEnum* QualityEnum = StaticEnum(); int QualityEnumNum = QualityEnum->NumEnums() - 1; - iCurrentSelectQuality = FMath::Clamp(iCurrentSelectQuality - 1, 0, QualityEnumNum - 1); + iCurrentSelectQuality = FMath::Clamp(iCurrentSelectQuality + 1, 0, QualityEnumNum - 1); UpdateSelectQuality(); } @@ -197,8 +143,7 @@ void UMainScreenUserWidget::UpdateSelectQuality() ULuckyRobotsGameInstance* LuckyRobotsGameInstance = Cast(GetGameInstance()); if (LuckyRobotsGameInstance) { - UEnum* QualityEnum = StaticEnum(); - LuckyRobotsGameInstance->CurrentSelectQuality = EQualityEnum(QualityEnum->GetValueByIndex(iCurrentSelectQuality)); + LuckyRobotsGameInstance->CurrentSelectQuality = static_cast(iCurrentSelectQuality); } BPUpdateSelectQuality(); } \ No newline at end of file diff --git a/Source/Luckyrobots/Public/LobbyGameMode.h b/Source/Luckyrobots/Public/LobbyGameMode.h index 636fabba..0702d262 100644 --- a/Source/Luckyrobots/Public/LobbyGameMode.h +++ b/Source/Luckyrobots/Public/LobbyGameMode.h @@ -13,5 +13,7 @@ UCLASS() class LUCKYROBOTS_API ALobbyGameMode : public AGameModeBase { GENERATED_BODY() - + +protected: + virtual void BeginPlay() override; }; diff --git a/Source/Luckyrobots/Public/LuckyRobotsFunctionLibrary.h b/Source/Luckyrobots/Public/LuckyRobotsFunctionLibrary.h new file mode 100644 index 00000000..d55be048 --- /dev/null +++ b/Source/Luckyrobots/Public/LuckyRobotsFunctionLibrary.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Kismet/BlueprintFunctionLibrary.h" +#include "SharedDef.h" +#include "LuckyRobotsFunctionLibrary.generated.h" + +class ULuckyRobotsGameInstance; +/** + * + */ +UCLASS() +class LUCKYROBOTS_API ULuckyRobotsFunctionLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() +public: + UFUNCTION(BlueprintPure, meta = (WorldContext = "WorldContextObject")) + static ULuckyRobotsGameInstance* GetLuckyRobotsGameInstance(const UObject* WorldContextObject); + + UFUNCTION(BlueprintPure, meta = (WorldContext = "WorldContextObject")) + static TArray GetActiveRobotDataList(const UObject* WorldContextObject); + + UFUNCTION(BlueprintPure, meta = (WorldContext = "WorldContextObject")) + static TArray GetActiveLevelDataList(const UObject* WorldContextObject); + + UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject")) + static void UpdateQualitySettings(const UObject* WorldContextObject); +}; diff --git a/Source/Luckyrobots/Public/LuckyRobotsGameInstance.h b/Source/Luckyrobots/Public/LuckyRobotsGameInstance.h index f1c48776..dbfc7a67 100644 --- a/Source/Luckyrobots/Public/LuckyRobotsGameInstance.h +++ b/Source/Luckyrobots/Public/LuckyRobotsGameInstance.h @@ -7,6 +7,7 @@ #include "SharedDef.h" #include "LuckyRobotsGameInstance.generated.h" +class USIOJsonValue; /** * */ @@ -15,13 +16,24 @@ class LUCKYROBOTS_API ULuckyRobotsGameInstance : public UGameInstance { GENERATED_BODY() +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") + UDataTable* RobotDataDataTable; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") + UDataTable* LevelDataTable; + public: UPROPERTY(EditAnywhere, BlueprintReadWrite) - ERobotsName CurrentSelectRobot; + ERobotsName CurrentSelectRobot = ERobotsName::None; UPROPERTY(EditAnywhere, BlueprintReadWrite) - ELevelEnum CurrentSelectLevel; + ELevelEnum CurrentSelectLevel = ELevelEnum::None; UPROPERTY(EditAnywhere, BlueprintReadWrite) - EQualityEnum CurrentSelectQuality; + EQualityEnum CurrentSelectQuality = EQualityEnum::Epic; + +public: + UFUNCTION(BlueprintImplementableEvent) + void DoGetDispatch(const FString& EventName, USIOJsonValue* EventData); }; diff --git a/Source/Luckyrobots/Public/LuckyRobotsGameMode.h b/Source/Luckyrobots/Public/LuckyRobotsGameMode.h index d36ec760..995af35d 100644 --- a/Source/Luckyrobots/Public/LuckyRobotsGameMode.h +++ b/Source/Luckyrobots/Public/LuckyRobotsGameMode.h @@ -13,5 +13,9 @@ UCLASS() class LUCKYROBOTS_API ALuckyRobotsGameMode : public AGameModeBase { GENERATED_BODY() - + +protected: + virtual void BeginPlay() override; + virtual UClass* GetDefaultPawnClassForController_Implementation(AController* InController) override; + }; diff --git a/Source/Luckyrobots/Public/LuckyRobotsGameState.h b/Source/Luckyrobots/Public/LuckyRobotsGameState.h index 4e64ee0b..75799030 100644 --- a/Source/Luckyrobots/Public/LuckyRobotsGameState.h +++ b/Source/Luckyrobots/Public/LuckyRobotsGameState.h @@ -6,6 +6,8 @@ #include "GameFramework/GameStateBase.h" #include "LuckyRobotsGameState.generated.h" +class USocketIOClientComponent; +class USIOJsonValue; /** * */ @@ -13,5 +15,21 @@ UCLASS() class LUCKYROBOTS_API ALuckyRobotsGameState : public AGameStateBase { GENERATED_BODY() - +protected: + ALuckyRobotsGameState(); + virtual void BeginPlay() override; + +public: + UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) + USocketIOClientComponent* SocketIOClientComponent; + +public: + UFUNCTION(BlueprintCallable) + void DoSendMessage(FString SendValue); + + UFUNCTION(BlueprintCallable) + void DoSocketOnConnect(FString SocketId, FString SessionId, bool IsReconnection); + + UFUNCTION(BlueprintCallable) + void DoSocketOnGenericEvent(FString EventName, USIOJsonValue* EventData); }; diff --git a/Source/Luckyrobots/Public/MainScreenUserWidget.h b/Source/Luckyrobots/Public/MainScreenUserWidget.h index f2327457..7e30945d 100644 --- a/Source/Luckyrobots/Public/MainScreenUserWidget.h +++ b/Source/Luckyrobots/Public/MainScreenUserWidget.h @@ -18,13 +18,6 @@ class LUCKYROBOTS_API UMainScreenUserWidget : public UUserWidget protected: virtual void NativeConstruct(); -public: - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") - UDataTable* RobotDataDataTable; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Config") - UDataTable* LevelDataTable; - public: UPROPERTY(EditAnywhere, BlueprintReadWrite) TArray RobotDataList; diff --git a/Source/Luckyrobots/Public/SharedDef.h b/Source/Luckyrobots/Public/SharedDef.h index 70952b69..be25e5c3 100644 --- a/Source/Luckyrobots/Public/SharedDef.h +++ b/Source/Luckyrobots/Public/SharedDef.h @@ -64,10 +64,18 @@ enum class ELevelEnum : uint8 UENUM(BlueprintType) enum class EQualityEnum : uint8 { - Epic UMETA(DisplayName = "Epic"), - High UMETA(DisplayName = "High"), + Low UMETA(DisplayName = "Low"), Middle UMETA(DisplayName = "Middle"), - Low UMETA(DisplayName = "Low") + High UMETA(DisplayName = "High"), + Epic UMETA(DisplayName = "Epic") +}; + +UENUM(BlueprintType) +enum class EGoalType : uint8 +{ + GrabAndPull UMETA(DisplayName = "Grab and Pull"), + GrabAndRotate UMETA(DisplayName = "Grab and Rotate"), + }; USTRUCT(BlueprintType) @@ -123,4 +131,92 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite) TArray RobotTypeList; -}; \ No newline at end of file +}; + +USTRUCT(BlueprintType) +struct FGoalsTaskData : public FTableRowBase +{ + GENERATED_BODY() +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite) + EGoalType GoalType; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bIsStart; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FTransform TargetLocation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + AActor* TargetActor; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bIsComplate; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FVector DropOffLocation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString ObjectName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bActive; +}; + +USTRUCT(BlueprintType) +struct FCaptureSettingsData : public FTableRowBase +{ + GENERATED_BODY() +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText FolderName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText FileName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText WritesPerSec; + + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool IsScenario; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TArray TaskList; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bLight; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bMaterials; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bRobotPosition; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bPets; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText NumberOfPets; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bPeople; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText NumberOfPeople; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bObjects; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText NumberOfObjects; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TArray RandomMeshes; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + bool bInfiniteCapture; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FText NumberOfCaptures; +};