Added Datetime sorting functionality and Metrics test on GetPursit

This commit is contained in:
2025-07-13 02:38:05 +02:00
parent 6a88fec83a
commit 76a199e95e

View File

@ -7,6 +7,7 @@
#include "DTFluxCoreSubsystem.h" #include "DTFluxCoreSubsystem.h"
#include "DTFluxCoreSubsystemModule.h" #include "DTFluxCoreSubsystemModule.h"
#include "Dataflow/DataflowContextCache.h"
UDTFluxPursuitManager::UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer): UDTFluxPursuitManager::UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer):
Super(ObjectInitializer) Super(ObjectInitializer)
@ -69,6 +70,8 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
TArray<FDTFluxPursuitInfo>& OutPursuitNext, bool& BIsFocusTruncate, TArray<FDTFluxPursuitInfo>& OutPursuitNext, bool& BIsFocusTruncate,
const int MaxSimultaneousPursuit) const int MaxSimultaneousPursuit)
{ {
FDateTime CurrentTime = FDateTime::UtcNow();
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("=== GetPursuit CALLED ===")); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("=== GetPursuit CALLED ==="));
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit);
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Available groups: %d"), GroupedPursuit.Num()); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Available groups: %d"), GroupedPursuit.Num());
@ -83,6 +86,7 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
return; return;
} }
if (bIsSequenceDone || GroupedPursuit.IsEmpty()) if (bIsSequenceDone || GroupedPursuit.IsEmpty())
{ {
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("No groups available or sequence completed")); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("No groups available or sequence completed"));
@ -92,12 +96,30 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
return; 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(); OutPursuitFocusNext.Reset();
OutPursuitNext.Reset(); OutPursuitNext.Reset();
// === ÉTAPE 1: FOCUS = PREMIER GROUPE (et le supprimer) === FDTFluxPursuitGroup FocusGroup = GroupedPursuit[0];
FDTFluxPursuitGroup FocusGroup = GroupedPursuit[0]; // Copie du premier groupe GroupedPursuit.RemoveAt(0);
GroupedPursuit.RemoveAt(0); // ✅ SUPPRIMER le premier groupe
SetPursuitInfoIsMassStart(FocusGroup); SetPursuitInfoIsMassStart(FocusGroup);
OutPursuitFocusNext = FocusGroup.PursuitGroup; OutPursuitFocusNext = FocusGroup.PursuitGroup;
@ -176,6 +198,10 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
bIsSequenceDone = true; bIsSequenceDone = true;
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Pursuit sequence will be completed after this round")); 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() bool UDTFluxPursuitManager::InitSubSystems()