From 76a199e95ef9a1f8aee4103b62f291d9f671f01c Mon Sep 17 00:00:00 2001 From: Ange-Marie MAURIN Date: Sun, 13 Jul 2025 02:38:05 +0200 Subject: [PATCH] Added Datetime sorting functionality and Metrics test on GetPursit --- .../Private/DTFluxPursuitManager.cpp | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp b/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp index 3df9da9..1ed8aa0 100644 --- a/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp +++ b/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp @@ -7,6 +7,7 @@ #include "DTFluxCoreSubsystem.h" #include "DTFluxCoreSubsystemModule.h" +#include "Dataflow/DataflowContextCache.h" UDTFluxPursuitManager::UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer): Super(ObjectInitializer) @@ -69,6 +70,8 @@ void UDTFluxPursuitManager::GetPursuit(TArray& OutPursuitFoc TArray& OutPursuitNext, bool& BIsFocusTruncate, const int MaxSimultaneousPursuit) { + FDateTime CurrentTime = FDateTime::UtcNow(); + UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("=== GetPursuit CALLED ===")); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Available groups: %d"), GroupedPursuit.Num()); @@ -83,6 +86,7 @@ void UDTFluxPursuitManager::GetPursuit(TArray& OutPursuitFoc return; } + if (bIsSequenceDone || GroupedPursuit.IsEmpty()) { UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("No groups available or sequence completed")); @@ -92,12 +96,30 @@ void UDTFluxPursuitManager::GetPursuit(TArray& OutPursuitFoc return; } + int32 RemovedGroupsCount = 0; + for (int32 i = GroupedPursuit.Num() - 1; i >= 0; i--) // Parcours inverse pour éviter les problèmes d'index + { + const FDTFluxPursuitGroup& Group = GroupedPursuit[i]; + + // Vérifier si le StartTime du groupe est déjà passé + if (Group.StartTimeGlobal < CurrentTime) + { + UE_LOG(logDTFluxCoreSubsystem, Warning, + TEXT("Removing expired group: StartTime=%s (Current=%s), Participants=%d"), + *Group.StartTimeGlobal.ToString(), + *CurrentTime.ToString(), + Group.PursuitGroup.Num()); + + GroupedPursuit.RemoveAt(i); + RemovedGroupsCount++; + } + } + OutPursuitFocusNext.Reset(); OutPursuitNext.Reset(); - // === ÉTAPE 1: FOCUS = PREMIER GROUPE (et le supprimer) === - FDTFluxPursuitGroup FocusGroup = GroupedPursuit[0]; // Copie du premier groupe - GroupedPursuit.RemoveAt(0); // ✅ SUPPRIMER le premier groupe + FDTFluxPursuitGroup FocusGroup = GroupedPursuit[0]; + GroupedPursuit.RemoveAt(0); SetPursuitInfoIsMassStart(FocusGroup); OutPursuitFocusNext = FocusGroup.PursuitGroup; @@ -176,6 +198,10 @@ void UDTFluxPursuitManager::GetPursuit(TArray& OutPursuitFoc bIsSequenceDone = true; UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Pursuit sequence will be completed after this round")); } + FTimespan Duration = FDateTime::UtcNow() - CurrentTime; + + UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Metrics Time Out: %d fraction seconds"), + Duration.GetDuration().GetFractionMicro()); } bool UDTFluxPursuitManager::InitSubSystems()