From 89c759894cbe1de1fb420b5769c3ba6a919ca711 Mon Sep 17 00:00:00 2001 From: Jamie Greunbaum Date: Sat, 25 Mar 2023 23:47:12 -0400 Subject: [PATCH] Bug markers can now be shown and hidden in the current level via static functions. --- Content/BP_BugPlacerPawn.uasset | Bin 241517 -> 239774 bytes .../Unrealzilla/Private/BugMarkerLoader.cpp | 164 ++++++++++++++++++ Source/Unrealzilla/Private/BugPlacerPawn.cpp | 43 ++++- .../Unrealzilla/Private/BugSubmissionForm.cpp | 26 +-- Source/Unrealzilla/Public/BugMarkerActor.h | 20 +++ Source/Unrealzilla/Public/BugMarkerLoader.h | 88 ++++++++++ Source/Unrealzilla/Public/BugPlacerPawn.h | 18 +- Source/Unrealzilla/Public/BugSubmissionForm.h | 70 ++++---- .../Public/UnrealzillaGlobalSettings.h | 39 +++-- 9 files changed, 394 insertions(+), 74 deletions(-) create mode 100644 Source/Unrealzilla/Private/BugMarkerLoader.cpp create mode 100644 Source/Unrealzilla/Public/BugMarkerLoader.h diff --git a/Content/BP_BugPlacerPawn.uasset b/Content/BP_BugPlacerPawn.uasset index 1c3bcdb545a5f9c45c6c03850233defbaa4b0b99..23b90d1e67d5981f641673bc9ecab28d5cd7f7d6 100644 GIT binary patch literal 239774 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 + "/rest.cgi"; + + TArray StatusQueries; + if (GetDefault()->bShowUnresolvedBugs) + { + for (const FString Unresolved : GetDefault()->UnresolvedStatuses) + { + StatusQueries.Add("status=" + Unresolved); + } + } + if (GetDefault()->bShowInProgressBugs) + { + for (const FString InProgress : GetDefault()->InProgressStatuses) + { + StatusQueries.Add("status=" + InProgress); + } + } + if (GetDefault()->bShowResolvedBugs) + { + for (const FString Resolved : GetDefault()->ResolvedStatuses) + { + StatusQueries.Add("status=" + Resolved); + } + } + StatusQueries.Add("cf_mapname=" + this->GetWorld()->GetMapName().RightChop(this->GetWorld()->StreamingLevelsPrefix.Len())); + StatusQueries.Add("api_key=" + GetDefault()->APIKey); + const FString QueryString = FString::Join(StatusQueries, TEXT("&")); + + FHttpModule &HttpModule = FHttpModule::Get(); + TSharedRef SeverityRequest = HttpModule.CreateRequest(); + SeverityRequest->SetVerb(TEXT("GET")); + SeverityRequest->SetHeader(TEXT("Content-Type"), TEXT("application/json")); + SeverityRequest->SetURL(FullURL + "/bug" + "?" + QueryString); + SeverityRequest->OnProcessRequestComplete().BindUObject(this, &ABugMarkerLoader::ServerBugResponse); + SeverityRequest->ProcessRequest(); +} + +void ABugMarkerLoader::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + this->GetWorldTimerManager().ClearTimer(this->NewBatchTimerHandle); + this->GetWorldTimerManager().ClearTimer(this->UnloadAllTimerHandle); + + Super::EndPlay(EndPlayReason); +} + +void ABugMarkerLoader::ServerBugResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success) +{ + if (Success) + { + FJSONBugResponse ResponseData; + FString JSONResponse = Response->GetContentAsString(); + FJsonObjectConverter::JsonObjectStringToUStruct(JSONResponse, &ResponseData); + + if (ResponseData.error) + { + this->Destroy(); + return; + } + else + { + this->BugBatch = ResponseData.bugs; + this->GetWorldTimerManager().SetTimer(this->NewBatchTimerHandle, this, &ABugMarkerLoader::LoadNewBatch, 1.0f/*this->GetWorld()->GetDeltaSeconds()*/); + } + } + else + { + this->Destroy(); + return; + } +} +void ABugMarkerLoader::LoadNewBatch() +{ + while (!this->BugBatch.IsEmpty()) + { + const FJSONBugData BugData = this->BugBatch[0]; + + FString LocationString, UpVectorString; + BugData.cf_location.Split(":", &LocationString, &UpVectorString); + + FString LocationX, LocationY, LocationZ; + LocationString.Split(",", &LocationX, &LocationY); + LocationY.Split(",", &LocationY, &LocationZ); + + FString UpVectorX, UpVectorY, UpVectorZ; + UpVectorString.Split(",", &UpVectorX, &UpVectorY); + UpVectorY.Split(",", &UpVectorY, &UpVectorZ); + + const FVector Location(FCString::Atof(*LocationX),FCString::Atof(*LocationY),FCString::Atof(*LocationZ)); + const FVector UpVector(FCString::Atof(*UpVectorX),FCString::Atof(*UpVectorY),FCString::Atof(*UpVectorZ)); + + TSubclassOf Class = StaticLoadClass(ABugMarkerActor::StaticClass(), this, BUG_MARKER_ACTOR_BP); + FActorSpawnParameters SpawnParams; + SpawnParams.Owner = this; + const FTransform Transform = FTransform(FRotationMatrix::MakeFromZ(UpVector).Rotator(), Location, FVector::OneVector); + ABugMarkerActor *Marker = this->GetWorld()->SpawnActorDeferred(Class, Transform, this); + Marker->SetBugID(BugData.id); + Marker->SetBugSummary(BugData.summary); + if (GetDefault()->UnresolvedStatuses.Contains(BugData.status)) + { + Marker->SetBugStatus(EBugStatus::Unresolved); + } + else if (GetDefault()->InProgressStatuses.Contains(BugData.status)) + { + Marker->SetBugStatus(EBugStatus::InProgress); + } + else if (GetDefault()->ResolvedStatuses.Contains(BugData.status)) + { + Marker->SetBugStatus(EBugStatus::Resolved); + } + Marker->FinishSpawning(Transform); + this->Markers.Add(Marker); + + this->BugBatch.RemoveAt(0); + if (!(this->BugBatch.Num() % GetDefault()->LoadMarkersBatch)) + { + break; + } + } + + if (!this->BugBatch.IsEmpty()) + { + this->GetWorldTimerManager().SetTimer(this->NewBatchTimerHandle, this, &ABugMarkerLoader::LoadNewBatch, this->GetWorld()->GetDeltaSeconds()); + } +} + +void ABugMarkerLoader::UnloadAll() +{ + this->GetWorldTimerManager().ClearTimer(this->NewBatchTimerHandle); + + while (!this->Markers.IsEmpty()) + { + AActor *Marker = this->Markers[0]; + this->Markers.RemoveAt(0); + Marker->Destroy(); + if (!(this->Markers.Num() % GetDefault()->UnloadMarkersBatch)) + { + break; + } + } + + if (!this->Markers.IsEmpty()) + { + this->GetWorldTimerManager().SetTimer(this->UnloadAllTimerHandle, this, &ABugMarkerLoader::UnloadAll, this->GetWorld()->GetDeltaSeconds()); + } + else + { + this->Destroy(); + } +} diff --git a/Source/Unrealzilla/Private/BugPlacerPawn.cpp b/Source/Unrealzilla/Private/BugPlacerPawn.cpp index e73db0a..f10da6c 100644 --- a/Source/Unrealzilla/Private/BugPlacerPawn.cpp +++ b/Source/Unrealzilla/Private/BugPlacerPawn.cpp @@ -3,11 +3,13 @@ #include "BugPlacerPawn.h" #include "BugMarkerActor.h" +#include "BugMarkerLoader.h" #include "ExitingBugPlacementScreen.h" #include "UnrealzillaGlobalSettings.h" #include "Components/MaterialBillboardComponent.h" #include "Components/SphereComponent.h" +#include "EngineUtils.h" #include "GameFramework/Character.h" #include "GameFramework/FloatingPawnMovement.h" #include "HAL/IConsoleManager.h" @@ -118,8 +120,9 @@ void ABugPlacerPawn::PlaceBugMarker() #if WITH_EDITOR SpawnParams.bHideFromSceneOutliner = true; #endif - - ABugMarkerActor *Marker = this->GetWorld()->SpawnActor(this->BugMarkerBlueprintClass.Get(), this->PlacementMarkerRoot->GetComponentTransform(), SpawnParams); + + TSubclassOf Class = StaticLoadClass(ABugMarkerActor::StaticClass(), nullptr, BUG_MARKER_ACTOR_BP); + ABugMarkerActor *Marker = this->GetWorld()->SpawnActor(Class.Get(), this->PlacementMarkerRoot->GetComponentTransform(), SpawnParams); Marker->LoadBugSubmissionForm(); } } @@ -168,10 +171,42 @@ void ABugPlacerPawn::ExitCanceled() } -void ABugPlacerPawn::SpawnBugPlacerPawn(const UObject *WorldContextObject, TSubclassOf Class) +void ABugPlacerPawn::SpawnBugPlacerPawn(const UObject *WorldContextObject) { + TSubclassOf Class = StaticLoadClass(ABugPlacerPawn::StaticClass(), nullptr, BUG_PLACER_PAWN_BP); const FTransform &Transform = UGameplayStatics::GetPlayerCameraManager(WorldContextObject, 0)->GetActorTransform(); FActorSpawnParameters SpawnParams; SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; - WorldContextObject->GetWorld()->SpawnActor(Class.Get(), Transform, SpawnParams); + WorldContextObject->GetWorld()->SpawnActor(Class, Transform, SpawnParams); +} + +void ABugPlacerPawn::ShowBugMarkersInLevel(const UObject *WorldContextObject) +{ + for (TActorIterator Iterator(WorldContextObject->GetWorld(), ABugMarkerLoader::StaticClass()); Iterator; ++Iterator) + { + return; + } + WorldContextObject->GetWorld()->SpawnActor(ABugMarkerLoader::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator); +} + +void ABugPlacerPawn::HideBugMarkersInLevel(const UObject *WorldContextObject) +{ + for (TActorIterator Iterator(WorldContextObject->GetWorld(), ABugMarkerLoader::StaticClass()); Iterator; ++Iterator) + { + ABugMarkerLoader *BugMarkerLoader = Cast(*Iterator); + BugMarkerLoader->UnloadAll(); + } +} + +const FString ABugPlacerPawn::FormatQueryString(const TMap &QueryData) +{ + TArray AssembledKeyValuePairs; + TArray QueryKeys; + QueryData.GenerateKeyArray(QueryKeys); + for (const FString &QueryKey : QueryKeys) + { + AssembledKeyValuePairs.Add(QueryKey + "=" + QueryData[QueryKey]); + } + + return FString::Join(AssembledKeyValuePairs, TEXT("&")); } diff --git a/Source/Unrealzilla/Private/BugSubmissionForm.cpp b/Source/Unrealzilla/Private/BugSubmissionForm.cpp index 83d1c75..c0a69c9 100644 --- a/Source/Unrealzilla/Private/BugSubmissionForm.cpp +++ b/Source/Unrealzilla/Private/BugSubmissionForm.cpp @@ -3,6 +3,7 @@ #include "BugSubmissionForm.h" #include "BugMarkerActor.h" +#include "BugPlacerPawn.h" #include "CommonButtonBase.h" #include "CommonTextBlock.h" #include "HttpModule.h" @@ -31,19 +32,6 @@ const FText FormatFloatToText(float Float, int32 IntegralDigits, int32 Fractiona return FText::AsNumber(Float, &NumberFormat); } -const FString FormatQueryString(const TMap &QueryData) -{ - TArray AssembledKeyValuePairs; - TArray QueryKeys; - QueryData.GenerateKeyArray(QueryKeys); - for (const FString &QueryKey : QueryKeys) - { - AssembledKeyValuePairs.Add(QueryKey + "=" + QueryData[QueryKey]); - } - - return FString::Join(AssembledKeyValuePairs, TEXT("&")); -} - const FString GetGameVersion() { FString GameVersion; @@ -67,7 +55,7 @@ void UBugSubmissionForm::NativeOnInitialized() // Assemble query data into key:value pairs TMap QueryData; QueryData.Add("api_key", GetDefault()->APIKey); - const FString QueryString = FormatQueryString(QueryData); + const FString QueryString = ABugPlacerPawn::FormatQueryString(QueryData); // Query the server for information about the current product FHttpModule &HttpModule = FHttpModule::Get(); @@ -113,11 +101,11 @@ void UBugSubmissionForm::SetMarkerData(ABugMarkerActor *BugMarker) this->MapName = FText::AsCultureInvariant(this->GetWorld()->GetMapName().RightChop(this->GetWorld()->StreamingLevelsPrefix.Len())); - const FVector MarkerLocation = this->BugMarkerActor->GetActorLocation(); + const FVector MarkerLocationVector = this->BugMarkerActor->GetActorLocation(); FFormatNamedArguments MarkerLocationArgs; - MarkerLocationArgs.Add("X", FormatFloatToText(MarkerLocation.X, 1, 4)); - MarkerLocationArgs.Add("Y", FormatFloatToText(MarkerLocation.Y, 1, 4)); - MarkerLocationArgs.Add("Z", FormatFloatToText(MarkerLocation.Z, 1, 4)); + MarkerLocationArgs.Add("X", FormatFloatToText(MarkerLocationVector.X, 1, 4)); + MarkerLocationArgs.Add("Y", FormatFloatToText(MarkerLocationVector.Y, 1, 4)); + MarkerLocationArgs.Add("Z", FormatFloatToText(MarkerLocationVector.Z, 1, 4)); const FText MarkerLocationText = FText::Format(NSLOCTEXT("BugSubmissionForm", "MarkerLocation", "{X},{Y},{Z}"), MarkerLocationArgs); const FVector MarkerUpVector = this->BugMarkerActor->GetActorUpVector(); @@ -224,7 +212,7 @@ void UBugSubmissionForm::SubmitForm() TSharedRef Request = HttpModule.CreateRequest(); Request->SetVerb(TEXT("POST")); Request->SetHeader(TEXT("Content-Type"), TEXT("application/json")); - Request->SetURL(FullURL + RequestURL + "?" + FormatQueryString(QueryData)); + Request->SetURL(FullURL + RequestURL + "?" + ABugPlacerPawn::FormatQueryString(QueryData)); Request->SetContentAsString(PostJsonString); Request->OnProcessRequestComplete().BindUObject(this, &UBugSubmissionForm::ServerPOSTResponse); Request->ProcessRequest(); diff --git a/Source/Unrealzilla/Public/BugMarkerActor.h b/Source/Unrealzilla/Public/BugMarkerActor.h index 687ffc8..0461467 100644 --- a/Source/Unrealzilla/Public/BugMarkerActor.h +++ b/Source/Unrealzilla/Public/BugMarkerActor.h @@ -6,6 +6,17 @@ #include "BugMarkerActor.generated.h" +#define BUG_MARKER_ACTOR_BP TEXT("Blueprint'/Unrealzilla/BP_BugMarkerActor.BP_BugMarkerActor_C'") + + +UENUM() +enum class EBugStatus : uint8 +{ + Unresolved UMETA(DisplayName="Unresolved"), + InProgress UMETA(DisplayName="In Progress"), + Resolved UMETA(DisplayName="Resolved"), + MAX UMETA(Hidden) +}; UCLASS() class UNREALZILLA_API ABugMarkerActor : public AActor @@ -15,4 +26,13 @@ class UNREALZILLA_API ABugMarkerActor : public AActor public: UFUNCTION(BlueprintImplementableEvent) void LoadBugSubmissionForm(); + + void SetBugID(const uint32 &ID) { this->BugID = ID; } + void SetBugSummary(const FString &Summary) { this->BugSummary = Summary; } + void SetBugStatus(const EBugStatus &Status) { this->BugStatus = Status; } + +private: + uint32 BugID = 0; + FString BugSummary; + EBugStatus BugStatus; }; diff --git a/Source/Unrealzilla/Public/BugMarkerLoader.h b/Source/Unrealzilla/Public/BugMarkerLoader.h new file mode 100644 index 0000000..5e8c288 --- /dev/null +++ b/Source/Unrealzilla/Public/BugMarkerLoader.h @@ -0,0 +1,88 @@ +// ©2022 Batty Bovine Productions, LLC. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" + +#include "Interfaces/IHttpRequest.h" +#include "Interfaces/IHttpResponse.h" + +#include "BugMarkerLoader.generated.h" + + +/** +* JSON structs for bug lists +*/ +USTRUCT(Blueprintable) +struct FJSONBugData +{ + GENERATED_BODY() +public: + UPROPERTY() + int32 id = -1; + UPROPERTY() + FString summary; + UPROPERTY() + FString component; + UPROPERTY() + FString cf_mapname; + UPROPERTY() + FString cf_location; + UPROPERTY() + FString platform; + UPROPERTY() + FString op_sys; + UPROPERTY() + bool is_open = true; + UPROPERTY() + FString severity; + UPROPERTY() + FString status; + UPROPERTY() + FString resolution; + UPROPERTY() + int32 dupe_of = -1; +}; + +USTRUCT(Blueprintable) +struct FJSONBugResponse +{ + GENERATED_BODY() +public: + UPROPERTY(BlueprintReadOnly) + TArray bugs; + UPROPERTY(BlueprintReadOnly) + bool error = false; + UPROPERTY(BlueprintReadOnly) + int32 code = -1; + UPROPERTY(BlueprintReadOnly) + FString message; + UPROPERTY(BlueprintReadOnly) + FString documentation; +}; +/** +* END JSON structs for bug lists +*/ + + +UCLASS() +class UNREALZILLA_API ABugMarkerLoader : public AActor +{ + GENERATED_BODY() + +public: + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + + void UnloadAll(); + +private: + void ServerBugResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success); + void LoadNewBatch(); + + TArray Markers; + + TArray BugBatch; + FTimerHandle NewBatchTimerHandle; + FTimerHandle UnloadAllTimerHandle; +}; diff --git a/Source/Unrealzilla/Public/BugPlacerPawn.h b/Source/Unrealzilla/Public/BugPlacerPawn.h index 014361d..d7e6080 100644 --- a/Source/Unrealzilla/Public/BugPlacerPawn.h +++ b/Source/Unrealzilla/Public/BugPlacerPawn.h @@ -7,6 +7,8 @@ #include "BugPlacerPawn.generated.h" +#define BUG_PLACER_PAWN_BP TEXT("Blueprint'/Unrealzilla/BP_BugPlacerPawn.BP_BugPlacerPawn_C'") + UCLASS() class UNREALZILLA_API ABugPlacerPawn : public APawn @@ -25,7 +27,16 @@ public: void Deactivate(); UFUNCTION(BlueprintCallable, meta=(WorldContext="WorldContextObject")) - static void SpawnBugPlacerPawn(const UObject *WorldContextObject, TSubclassOf Class); + static void SpawnBugPlacerPawn(const UObject *WorldContextObject); + + UFUNCTION(BlueprintCallable, meta=(WorldContext="WorldContextObject")) + static void ShowBugMarkersInLevel(const UObject *WorldContextObject); + + UFUNCTION(BlueprintCallable, meta=(WorldContext="WorldContextObject")) + static void HideBugMarkersInLevel(const UObject *WorldContextObject); + + UFUNCTION(BlueprintPure) + static const FString FormatQueryString(const TMap &QueryData); protected: UFUNCTION(BlueprintCallable) @@ -60,8 +71,6 @@ protected: UPROPERTY(BlueprintReadOnly, VisibleAnywhere) TObjectPtr PawnMovement; - UPROPERTY(BlueprintReadOnly, EditDefaultsOnly) - TSubclassOf BugMarkerBlueprintClass; UPROPERTY(BlueprintReadOnly, EditDefaultsOnly) TSubclassOf ExitingBugPlacementScreenClass; @@ -75,11 +84,10 @@ private: uint8 bCurrentTraceHit : 1; TObjectPtr OriginalPlayer; + TObjectPtr BugMarker; TObjectPtr ExitingBugPlacementScreen; - //UPROPERTY(EditDefaultsOnly, meta=(UIMin="0.0", UIMax="0.25")) - // float TraceTimerDelay = 0.05f; FTimerHandle TraceTimerHandle; }; diff --git a/Source/Unrealzilla/Public/BugSubmissionForm.h b/Source/Unrealzilla/Public/BugSubmissionForm.h index 27f27f7..d294f05 100644 --- a/Source/Unrealzilla/Public/BugSubmissionForm.h +++ b/Source/Unrealzilla/Public/BugSubmissionForm.h @@ -65,41 +65,41 @@ public: */ -/** - * JSON structs for bug lists - */ -USTRUCT(Blueprintable) -struct FJSONBugData -{ - GENERATED_BODY() -public: - UPROPERTY() - FString component; - UPROPERTY() - FString cf_mapname; - UPROPERTY() - FString cf_location; -}; - -USTRUCT(Blueprintable) -struct FJSONBugResponse -{ - GENERATED_BODY() -public: - UPROPERTY(BlueprintReadOnly) - TArray bugs; - UPROPERTY(BlueprintReadOnly) - bool error = false; - UPROPERTY(BlueprintReadOnly) - int32 code = -1; - UPROPERTY(BlueprintReadOnly) - FString message; - UPROPERTY(BlueprintReadOnly) - FString documentation; -}; -/** - * END JSON structs for bug lists - */ +///** +// * JSON structs for bug lists +// */ +//USTRUCT(Blueprintable) +//struct FJSONBugData +//{ +// GENERATED_BODY() +//public: +// UPROPERTY() +// FString component; +// UPROPERTY() +// FString cf_mapname; +// UPROPERTY() +// FString cf_location; +//}; +// +//USTRUCT(Blueprintable) +//struct FJSONBugResponse +//{ +// GENERATED_BODY() +//public: +// UPROPERTY(BlueprintReadOnly) +// TArray bugs; +// UPROPERTY(BlueprintReadOnly) +// bool error = false; +// UPROPERTY(BlueprintReadOnly) +// int32 code = -1; +// UPROPERTY(BlueprintReadOnly) +// FString message; +// UPROPERTY(BlueprintReadOnly) +// FString documentation; +//}; +///** +// * END JSON structs for bug lists +// */ /** diff --git a/Source/Unrealzilla/Public/UnrealzillaGlobalSettings.h b/Source/Unrealzilla/Public/UnrealzillaGlobalSettings.h index c07ee71..15f91dc 100644 --- a/Source/Unrealzilla/Public/UnrealzillaGlobalSettings.h +++ b/Source/Unrealzilla/Public/UnrealzillaGlobalSettings.h @@ -23,6 +23,10 @@ public: UPROPERTY(Config, BlueprintReadOnly, EditDefaultsOnly, Category="Bug Placement", meta=(DisplayName="Arbitrary Placement Distance")) float ArbitraryBugPlacementDistance = 250.0f; + // The status to use when filing a new bug. A status such as "UNCONFIRMED" is suggested. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting") + FString DefaultStatus; + // The Bugzilla server where bugs will be posted. UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting") FString SubmissionServer; @@ -36,32 +40,45 @@ public: UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting") int32 BugReportWidgetDepth = 0; - // The status to use when filing a new bug. A status such as "UNCONFIRMED" is suggested. - UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") - FString DefaultStatus; - // Whether to show unresolved bugs when displaying bug report markers. UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") - bool bShowUnresolvedBugs = false; - // Whether to show in-progress bugs when displaying bug report markers. + bool bShowUnresolvedBugs = true; + // Colour tint to use for unresolved bugs. UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") - bool bShowInProgressBugs = false; - // Whether to show resolved bugs when displaying bug report markers. - UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") - bool bShowResolvedBugs = false; - + FLinearColor UnresolvedTint; // A list of bug statuses that represent unresolved bugs in your Bugzilla install. // Generally this would be something like "UNCONFIRMED" and "CONFIRMED". UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") TArray UnresolvedStatuses; + + // Whether to show in-progress bugs when displaying bug report markers. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + bool bShowInProgressBugs = true; + // Colour tint to use for in-progress bugs. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + FLinearColor InProgressTint; // A list of bug statuses that represent in progress bugs in your Bugzilla install. // Generally this would include "IN_PROGRESS". UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") TArray InProgressStatuses; + + // Whether to show resolved bugs when displaying bug report markers. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + bool bShowResolvedBugs = false; + // Colour tint to use for resolved bugs. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + FLinearColor ResolvedTint; // A list of bug statuses that represent resolved bugs in your Bugzilla install. // Generally this would include "RESOLVED" and "VERIFIED". UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") TArray ResolvedStatuses; + + // How many bug markers to show in one batch. Each batch loads on a new frame. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + int32 LoadMarkersBatch = 10; + // How many bug markers to hide in one batch. Each batch loads on a new frame. + UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking") + int32 UnloadMarkersBatch = 25; public: virtual void PostInitProperties() override;