Add Agrarian performance profiling markers

This commit is contained in:
2026-05-16 11:01:46 -07:00
parent e50745dbdd
commit 82463f3b99
11 changed files with 196 additions and 1 deletions
@@ -2,11 +2,13 @@
#include "AgrarianWeatherProviderSubsystem.h"
#include "AgrarianGameState.h"
#include "AgrarianPerformanceStats.h"
#include "Dom/JsonObject.h"
#include "Engine/World.h"
#include "HttpModule.h"
#include "Interfaces/IHttpResponse.h"
#include "Kismet/GameplayStatics.h"
#include "ProfilingDebugging/CpuProfilerTrace.h"
#include "Serialization/JsonReader.h"
#include "Serialization/JsonSerializer.h"
@@ -24,6 +26,9 @@ bool UAgrarianWeatherProviderSubsystem::RequestWeatherForActiveGameState()
bool UAgrarianWeatherProviderSubsystem::RequestWeatherForTile(FName TileId, float Latitude, float Longitude)
{
SCOPE_CYCLE_COUNTER(STAT_AgrarianWeatherProviderRequest);
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianWeatherProviderRequest);
if (TileId == NAME_None)
{
return false;
@@ -172,6 +177,9 @@ void UAgrarianWeatherProviderSubsystem::ClearWeatherSnapshotCache()
bool UAgrarianWeatherProviderSubsystem::ApplyDeterministicFallbackWeather(FName TileId, float Latitude, float Longitude, AAgrarianGameState* GameState)
{
SCOPE_CYCLE_COUNTER(STAT_AgrarianWeatherProviderParse);
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianWeatherProviderFallback);
if (!bEnableDeterministicFallbackWeather || !GameState || !GameState->HasAuthority() || TileId == NAME_None)
{
return false;
@@ -356,6 +364,9 @@ void UAgrarianWeatherProviderSubsystem::OnNoaaNwsGridDataResponse(FHttpRequestPt
bool UAgrarianWeatherProviderSubsystem::ParseOpenMeteoForecast(const FString& ResponseContent, FName TileId, float Latitude, float Longitude, FAgrarianWeatherProviderSnapshot& OutSnapshot) const
{
SCOPE_CYCLE_COUNTER(STAT_AgrarianWeatherProviderParse);
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianWeatherProviderParseOpenMeteo);
TSharedPtr<FJsonObject> RootObject;
const TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(ResponseContent);
if (!FJsonSerializer::Deserialize(Reader, RootObject) || !RootObject.IsValid())
@@ -427,6 +438,9 @@ bool UAgrarianWeatherProviderSubsystem::ParseOpenMeteoForecast(const FString& Re
bool UAgrarianWeatherProviderSubsystem::ParseNoaaNwsGridData(const FString& ResponseContent, FName TileId, float Latitude, float Longitude, FAgrarianWeatherProviderSnapshot& OutSnapshot) const
{
SCOPE_CYCLE_COUNTER(STAT_AgrarianWeatherProviderParse);
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianWeatherProviderParseNoaaNws);
TSharedPtr<FJsonObject> RootObject;
const TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(ResponseContent);
if (!FJsonSerializer::Deserialize(Reader, RootObject) || !RootObject.IsValid())