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()