KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UDelayTaskManager.h
이 파일의 문서화 페이지로 가기
1// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
7#pragma once
8
9#include "CoreMinimal.h"
10#include "Macro.h"
11#include "Subsystems/GameInstanceSubsystem.h"
12#include "Delegates/Delegate.h"
13#include "UDelayTaskManager.generated.h"
14
19USTRUCT(BlueprintType)
21{
22 GENERATED_BODY()
23
24 uint64 SeqIndex = 0;
25
26 bool IsValid() const
27 {
28 return SeqIndex != 0;
29 }
30};
31
33
38UCLASS()
39class LATTELIBRARY_API UDelayTaskManager : public UGameInstanceSubsystem
40{
41 GENERATED_BODY()
42
43public:
45
46 virtual void Initialize(FSubsystemCollectionBase& Collection) override;
47 virtual void Deinitialize() override;
48
49 UFUNCTION(BlueprintCallable, Category="Sequence")
50 FDelayHandle DelayCallBack(UObject* Owner, float Seconds, FDelayCallback Callback);
51
52 // C++용 람다/함수버전
53 FDelayHandle Delay(UObject* Owner, float Seconds, TFunction<void()> Action);
54 // 다음 틱에 실행
55 FDelayHandle NextTick(UObject* Owner, TFunction<void()> Action);
56
57 UFUNCTION(BlueprintCallable, Category="Sequence")
58 bool Cancel(const FDelayHandle& Handle);
59
60 UFUNCTION(BlueprintCallable, Category="Sequence")
61 void CancelAll(UObject* Owner);
62
63private:
64 // 타이머 만료 시 ID 기반 실행(핸들 전달 금지)
65 UFUNCTION()
66 void ExecuteById(uint64 SeqIndex);
67
68 // 내부 제거 헬퍼
69 void RemoveEntryById(uint64 SeqIndex);
70private:
71 struct FEntry
72 {
73 TWeakObjectPtr<UObject> Owner;
74 TFunction<void()> Action;
75 uint64 SeqIndex = 0;
76 // 실제 엔진 핸들(로그/취소용)
77 FTimerHandle TimerHandle;
78 };
79
80 // 키를 uint64 ID로 통일
81 TMap<uint64, FEntry> Entries;
82
83 // Owner -> 여러 ID
84 TMultiMap<TWeakObjectPtr<UObject>, uint64> OwnerIndex;
85
86 // ID 시퀀스
87 uint64 NextSeqIndex = 1;
88};
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
DECLARE_DYNAMIC_DELEGATE(FDelayCallback)
지정된 시간 후에 함수(콜백)를 실행하는 지연 작업 관리 서브시스템입니다.
DEFINE_SUBSYSTEM_GETTER_INLINE(UDelayTaskManager)
TMultiMap< TWeakObjectPtr< UObject >, uint64 > OwnerIndex
TMap< uint64, FEntry > Entries
UDelayTaskManager에 의해 생성된 지연 작업을 식별하고 제어하기 위한 핸들입니다.
TWeakObjectPtr< UObject > Owner