Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
PatternWarningDecalActor.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CK_UE.h"
6#include "GameFramework/Actor.h"
8#include "PatternWarningDecalActor.generated.h"
9
10class UDecalComponent;
11class UMaterialInterface;
12class USceneComponent;
15
16enum class EPatternWarningDecalShape : uint8
17{
18 None,
19 Circle,
20 Line
21};
22
23UCLASS()
24class CK_UE_API APatternWarningDecalActor : public AActor, public IObjectPoolingInterface
25{
26 GENERATED_BODY()
27
28public:
30
31 virtual void Tick(float DeltaSeconds) override;
32
33 // 데칼 시작 함수
34 bool StartCircleWarningAttached(USceneComponent* AttachParent, const FVector& LocalOffset, float WarningDuration, float FinalRadius, const FPatternWarningDecalSettings& Settings);
35 bool StartCircleWarningAtTransform(const FTransform& WorldTransform, float WarningDuration, float FinalRadius, const FPatternWarningDecalSettings& Settings);
36 bool StartLineWarningAttached(USceneComponent* AttachParent, const FPatternLineWarningDecalSettings& Settings);
37
38 void SetLineLengthRatio(float LengthRatio) const;
39 void StopWarning();
40 void CancelWarning();
41 void ReturnToPoolImmediately();
42
43protected:
44 virtual void OnSpawnFromPool_Implementation() override;
45 virtual void OnReturnToPool_Implementation() override;
46
47private:
48 bool StartCircleProgress();
49
50 // 데칼 준비 함수
51 bool CreateCircleWarningDecals(const FPatternWarningDecalSettings& Settings);
52 bool CreateLineWarningDecals(const FPatternLineWarningDecalSettings& Settings);
53 bool ConfigureDecalComponent(UDecalComponent* DecalComponent, UMaterialInterface* DecalMaterial, const FVector& DecalSize, int32 SortOrder, float FadeInDuration) const;
54
55 void BeginStopWarning(bool bCompleteProgress);
56 void ApplyFadeOut(UDecalComponent* DecalComponent, float FadeOutDuration) const;
57
58 // 원형 데칼 보간 함수
59 void UpdateCircleProgress();
60 void UpdateCircleWarning(float Alpha) const;
61
62 void ResetRuntimeState();
63 void ResetDecalComponent(UDecalComponent* DecalComponent) const;
64
65protected:
66 UPROPERTY(VisibleAnywhere, Category = "Warning")
67 TObjectPtr<USceneComponent> SceneRootComponent;
68
69 UPROPERTY(VisibleAnywhere, Category = "Warning")
70 TObjectPtr<UDecalComponent> MaxRangeDecalComponent;
71
72 UPROPERTY(VisibleAnywhere, Category = "Warning")
73 TObjectPtr<UDecalComponent> FillDecalComponent;
74
75private:
76 FVector CurrentLineStartLocation = FVector::ZeroVector;
77 float WarningStartTime = 0.0f;
78 float CurrentWarningDuration = 0.0f;
79 float CurrentFadeOutDuration = 0.0f;
80 float CurrentLineLength = 0.0f;
81 float CurrentCircleStartRadius = 0.0f;
82 float CurrentCircleFinalRadius = 0.0f;
83 bool bIsFadingOut = false;
85 FTimerHandle ReturnToPoolTimerHandle;
86};
EPatternWarningDecalShape
Definition PatternWarningDecalActor.h:17
Definition PatternWarningDecalActor.h:25
Definition ObjectPoolingInterface.h:18
Definition PatternWarningDecalData.h:43
float FadeInDuration
Definition PatternWarningDecalData.h:25
float FadeOutDuration
Definition PatternWarningDecalData.h:28
Definition PatternWarningDecalData.h:33