Add Agrarian performance profiling markers
This commit is contained in:
@@ -2,8 +2,10 @@
|
||||
|
||||
#include "AgrarianFoliagePatch.h"
|
||||
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
#include "Components/HierarchicalInstancedStaticMeshComponent.h"
|
||||
#include "Components/SceneComponent.h"
|
||||
#include "ProfilingDebugging/CpuProfilerTrace.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -47,6 +49,9 @@ AAgrarianFoliagePatch::AAgrarianFoliagePatch()
|
||||
|
||||
void AAgrarianFoliagePatch::ClearFoliage()
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianFoliageInstanceMutation);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianFoliageClear);
|
||||
|
||||
if (TreeInstances)
|
||||
{
|
||||
TreeInstances->ClearInstances();
|
||||
@@ -65,16 +70,25 @@ void AAgrarianFoliagePatch::ClearFoliage()
|
||||
|
||||
int32 AAgrarianFoliagePatch::AddTreeInstance(const FTransform& InstanceTransform)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianFoliageInstanceMutation);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianFoliageAddTreeInstance);
|
||||
|
||||
return TreeInstances ? TreeInstances->AddInstance(InstanceTransform, true) : INDEX_NONE;
|
||||
}
|
||||
|
||||
int32 AAgrarianFoliagePatch::AddShrubInstance(const FTransform& InstanceTransform)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianFoliageInstanceMutation);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianFoliageAddShrubInstance);
|
||||
|
||||
return ShrubInstances ? ShrubInstances->AddInstance(InstanceTransform, true) : INDEX_NONE;
|
||||
}
|
||||
|
||||
int32 AAgrarianFoliagePatch::AddGrassInstance(const FTransform& InstanceTransform)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianFoliageInstanceMutation);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianFoliageAddGrassInstance);
|
||||
|
||||
return GrassInstances ? GrassInstances->AddInstance(InstanceTransform, true) : INDEX_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
// Copyright Pacificao. All Rights Reserved.
|
||||
|
||||
#include "AgrarianGameState.h"
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
#include "ProfilingDebugging/CpuProfilerTrace.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -70,6 +72,9 @@ void AAgrarianGameState::BeginPlay()
|
||||
|
||||
void AAgrarianGameState::Tick(float DeltaSeconds)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianGameStateTick);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianGameStateTick);
|
||||
|
||||
Super::Tick(DeltaSeconds);
|
||||
|
||||
if (!HasAuthority())
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright Pacificao. All Rights Reserved.
|
||||
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
|
||||
DEFINE_STAT(STAT_AgrarianGameStateTick);
|
||||
DEFINE_STAT(STAT_AgrarianSurvivalTick);
|
||||
DEFINE_STAT(STAT_AgrarianSkyLightingRefresh);
|
||||
DEFINE_STAT(STAT_AgrarianWeatherAudioRefresh);
|
||||
DEFINE_STAT(STAT_AgrarianFoliageInstanceMutation);
|
||||
DEFINE_STAT(STAT_AgrarianWeatherProviderRequest);
|
||||
DEFINE_STAT(STAT_AgrarianWeatherProviderParse);
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright Pacificao. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Stats/Stats.h"
|
||||
|
||||
DECLARE_STATS_GROUP(TEXT("Agrarian"), STATGROUP_Agrarian, STATCAT_Advanced);
|
||||
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Game State Tick"), STAT_AgrarianGameStateTick, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Survival Tick"), STAT_AgrarianSurvivalTick, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Sky Lighting Refresh"), STAT_AgrarianSkyLightingRefresh, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Weather Audio Refresh"), STAT_AgrarianWeatherAudioRefresh, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Foliage Instance Mutation"), STAT_AgrarianFoliageInstanceMutation, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Weather Provider Request"), STAT_AgrarianWeatherProviderRequest, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
DECLARE_CYCLE_STAT_EXTERN(TEXT("Weather Provider Parse"), STAT_AgrarianWeatherProviderParse, STATGROUP_Agrarian, AGRARIANGAME_API);
|
||||
@@ -3,11 +3,13 @@
|
||||
#include "AgrarianSkyLightingController.h"
|
||||
|
||||
#include "AgrarianGameState.h"
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
#include "Components/DirectionalLightComponent.h"
|
||||
#include "Components/ExponentialHeightFogComponent.h"
|
||||
#include "Components/SceneComponent.h"
|
||||
#include "Components/SkyLightComponent.h"
|
||||
#include "Engine/World.h"
|
||||
#include "ProfilingDebugging/CpuProfilerTrace.h"
|
||||
|
||||
AAgrarianSkyLightingController::AAgrarianSkyLightingController()
|
||||
{
|
||||
@@ -48,6 +50,9 @@ void AAgrarianSkyLightingController::Tick(float DeltaSeconds)
|
||||
|
||||
void AAgrarianSkyLightingController::RefreshSkyLighting()
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianSkyLightingRefresh);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianSkyLightingRefresh);
|
||||
|
||||
const UWorld* World = GetWorld();
|
||||
const AAgrarianGameState* GameState = World ? World->GetGameState<AAgrarianGameState>() : nullptr;
|
||||
if (!GameState)
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
#include "AgrarianSurvivalComponent.h"
|
||||
#include "AgrarianGameState.h"
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
#include "AgrarianShelterActor.h"
|
||||
#include "AgrarianWeatherExposureZone.h"
|
||||
#include "Components/BoxComponent.h"
|
||||
#include "Engine/World.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
#include "ProfilingDebugging/CpuProfilerTrace.h"
|
||||
|
||||
UAgrarianSurvivalComponent::UAgrarianSurvivalComponent()
|
||||
{
|
||||
@@ -24,6 +26,9 @@ void UAgrarianSurvivalComponent::BeginPlay()
|
||||
|
||||
void UAgrarianSurvivalComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianSurvivalTick);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianSurvivalTick);
|
||||
|
||||
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
||||
|
||||
if (!GetOwner() || !GetOwner()->HasAuthority() || !IsAlive())
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
#include "AgrarianWeatherAudioController.h"
|
||||
|
||||
#include "AgrarianGameState.h"
|
||||
#include "AgrarianPerformanceStats.h"
|
||||
#include "Components/AudioComponent.h"
|
||||
#include "Components/SceneComponent.h"
|
||||
#include "Engine/World.h"
|
||||
#include "ProfilingDebugging/CpuProfilerTrace.h"
|
||||
|
||||
AAgrarianWeatherAudioController::AAgrarianWeatherAudioController()
|
||||
{
|
||||
@@ -47,6 +49,9 @@ void AAgrarianWeatherAudioController::Tick(float DeltaSeconds)
|
||||
|
||||
void AAgrarianWeatherAudioController::RefreshWeatherAudio(float DeltaSeconds)
|
||||
{
|
||||
SCOPE_CYCLE_COUNTER(STAT_AgrarianWeatherAudioRefresh);
|
||||
TRACE_CPUPROFILER_EVENT_SCOPE(AgrarianWeatherAudioRefresh);
|
||||
|
||||
const UWorld* World = GetWorld();
|
||||
const AAgrarianGameState* GameState = World ? World->GetGameState<AAgrarianGameState>() : nullptr;
|
||||
if (!GameState)
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user