Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
StageEventProcessor.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "UObject/Object.h"
9#include "StageEventProcessor.generated.h"
10
11class AEventGate;
15
16
17/*
18 * ProcessorGroup이 Instanced로 보관하는 BP 핸들러.
19 *
20 * 디자이너는 이 클래스를 상속한 BP를 ProcessorGroup의 Processor 슬롯에 인스턴스로 지정한다.
21 * Dispatcher는 Entry의 조건을 평가한 뒤 ProcessorGroup을 통해 Process()를 호출한다.
22 * 이벤트별 데이터(예: GateLock Operation)는 자식 BP의 멤버 필드로 둔다.
23 *
24 * OnProcessEvent 노드에서 Context의 슬롯별 액터를 꺼내 cast 해서 상태를 변경한다.
25 */
26UCLASS(Abstract, Blueprintable, BlueprintType, EditInlineNew, meta = (ShowWorldContextPin))
27class CK_UE_API UStageEventProcessor : public UObject
28{
29 GENERATED_BODY()
30
31public:
32 void Process(UStageManagementSubsystem* StageManagement, const FName EventID, const AActor* Caller, const AActor* InteractableActor, const FStageEventContext& Context);
33
34public:
35 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "StageEventProcessor")
36 EStageEvent GetStageEvent() const;
37
38protected:
39 UFUNCTION(BlueprintNativeEvent, Category = "StageEventProcessor", DisplayName = "On Process Event")
40 void OnProcessEvent(const FName EventID, const AActor* Caller, const AActor* InteractableActor, const FStageEventContext& Context);
41
42private:
54 int32 ProcessProcessorTrigger(UStageManagementSubsystem* StageManagement, FName EventID, const AActor* Caller);
55
66 int32 ProcessProcessorTriggerWithoutRecord(UStageManagementSubsystem* StageManagement, FName EventID, const AActor* Caller);
67
68public:
69 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "StageEventProcessor")
70 FName ProcessorID = NAME_None;
71
72 // 이 Processor 가 발동될 수 있는 최대 횟수. 0 이면 비활성화(절대 발동되지 않음).
73 // 현재 발동 횟수는 World 수명에 묶인 UStageManagementSubsystem 의 TMap 에서 추적.
74 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "StageEventProcessor", meta = (ClampMin = "0"))
75 int32 MaxTriggerCount = 1;
76
77protected:
78 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "StageEventProcessor")
79 TSet<EListenerSlot> IgnoredSlots;
80};
EListenerSlot
Definition EStageEventEnums.h:29
EStageEvent
Definition EStageEventEnums.h:5
Definition EventGate.h:31
Definition InteractableActor.h:16
Definition StageEventCondition.h:17
Definition StageEventProcessor.h:28
Definition StageManagementSubsystem.h:147
Definition StageEventContext.h:18