Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UEnemyDespawnDefinition 클래스 참조

#include <EnemyDespawnDefinition.h>

UEnemyDespawnDefinition에 대한 상속 다이어그램 :
Inheritance graph
UEnemyDespawnDefinition에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

bool StartEnemyDespawnFlow (AEnemyCharacterBase *InEnemyCharacter)
 
bool StartEnemyDespawnFlow (AEnemyCharacterBase *InEnemyCharacter, TFunction< void()> &&InOnFlowFinished)
 
FORCEINLINE FMaterialOpacityTransition GetDespawnMaterialTransition () const
 
- UFlowDefinitionBase(으)로부터 상속된 Public 멤버 함수
bool StartFlow (UObject *InFlowOwner)
 
void FinishFlow ()
 
void ResetFlow ()
 
FORCEINLINE bool IsRunning () const
 
FORCEINLINE UObject * GetFlowOwner () const
 

Protected 멤버 함수

virtual void HandleFlowStarted (UObject *InFlowOwner) override
 
virtual void HandleFlowFinished () override
 
virtual void HandleFlowReset () override
 
virtual void PlayDespawnFlow_Implementation (AEnemyCharacterBase *InEnemyCharacter)
 
void PlayDespawnFlow (AEnemyCharacterBase *InEnemyCharacter)
 
- UFlowDefinitionBase(으)로부터 상속된 Protected 멤버 함수
void StopFlow ()
 
void ReceiveFlowStarted (UObject *InFlowOwner)
 
void ReceiveFlowFinished ()
 
void ReceiveFlowReset ()
 

Protected 속성

TObjectPtr< UNiagaraSystem > DespawnNiagaraSystem
 
FName SkeletalMeshUserParameterName = TEXT("User.SkeletalMesh")
 
float DespawnNiagaraPlayTime = 2.0f
 
FMaterialOpacityTransition DespawnMaterialTransition = FMaterialOpacityTransition(1.0f, 0.0f)
 

Private 멤버 함수

void ApplyMaterialTransition (AEnemyCharacterBase *InEnemyCharacter, const FMaterialOpacityTransition &InTransition)
 
void PrepareDespawnNiagara (AEnemyCharacterBase *InEnemyCharacter)
 
void ActivateDespawnNiagara ()
 
void CompleteMaterialTransition ()
 
USkeletalMeshComponent * CreateCopyPoseProxyMesh (AEnemyCharacterBase *InEnemyCharacter)
 
void ScheduleCopyPoseProxyCleanup ()
 
void DestroyCopyPoseProxy ()
 
void UpdateMaterialTransition ()
 
void ClearMaterialTransitionTimer ()
 
void RestoreMaterialSlots ()
 

Private 속성

TWeakObjectPtr< AEnemyCharacterBaseActiveEnemyCharacter
 
TWeakObjectPtr< UWorld > ActiveWorld
 
TArray< int32 > ActiveMaterialSlotIndices
 
TArray< TObjectPtr< UMaterialInterface > > OriginalMaterials
 
TArray< TObjectPtr< UMaterialInstanceDynamic > > DynamicMaterials
 
TObjectPtr< AActor > ActiveCopyPoseProxyActor
 
TObjectPtr< USkeletalMeshComponent > ActiveCopyPoseProxyMesh
 
TWeakObjectPtr< UWorld > ActiveCopyPoseProxyWorld
 
FTimerHandle MaterialTransitionTimerHandle
 
FTimerHandle CopyPoseProxyCleanupTimerHandle
 
float MaterialTransitionStartTime = 0.0f
 
float ActiveTransitionDurationSeconds = 0.0f
 
float ActiveTransitionStartOpacity = 1.0f
 
float ActiveTransitionEndOpacity = 0.0f
 
FName ActiveOpacityParameterName = TEXT("Opacity")
 
TFunction< void()> OnDespawnFlowFinished
 

멤버 함수 문서화

◆ ActivateDespawnNiagara()

void UEnemyDespawnDefinition::ActivateDespawnNiagara ( )
private
102{
103 AEnemyCharacterBase* EnemyCharacter = ActiveEnemyCharacter.Get();
104 if (EnemyCharacter == nullptr || DespawnNiagaraSystem == nullptr || ActiveCopyPoseProxyMesh == nullptr)
105 {
106 FinishFlow();
107 return;
108 }
109
110 const FTransform NiagaraTransform = ActiveCopyPoseProxyMesh->GetComponentTransform();
111
113 {
114 ActiveCopyPoseProxyActor->SetActorTransform(NiagaraTransform);
115 }
116
117 ActiveCopyPoseProxyMesh->SetWorldTransform(NiagaraTransform);
118
119 UNiagaraComponent* NiagaraComponent = UNiagaraFunctionLibrary::SpawnSystemAtLocation
120 (
121 EnemyCharacter,
123 NiagaraTransform.GetLocation(),
124 NiagaraTransform.Rotator(),
125 NiagaraTransform.GetScale3D(),
126 true,
127 false
128 );
129
130 if (NiagaraComponent == nullptr)
131 {
133 FinishFlow();
134 return;
135 }
136
137 UNiagaraFunctionLibrary::OverrideSystemUserVariableSkeletalMeshComponent(NiagaraComponent, SkeletalMeshUserParameterName.ToString(), ActiveCopyPoseProxyMesh);
138 NiagaraComponent->Activate(true);
139
141 FinishFlow();
142}
Definition EnemyCharacterBase.h:49
TWeakObjectPtr< AEnemyCharacterBase > ActiveEnemyCharacter
Definition EnemyDespawnDefinition.h:78
void DestroyCopyPoseProxy()
Definition EnemyDespawnDefinition.cpp:235
TObjectPtr< USkeletalMeshComponent > ActiveCopyPoseProxyMesh
Definition EnemyDespawnDefinition.h:96
void ScheduleCopyPoseProxyCleanup()
Definition EnemyDespawnDefinition.cpp:222
TObjectPtr< AActor > ActiveCopyPoseProxyActor
Definition EnemyDespawnDefinition.h:93
FName SkeletalMeshUserParameterName
Definition EnemyDespawnDefinition.h:68
TObjectPtr< UNiagaraSystem > DespawnNiagaraSystem
Definition EnemyDespawnDefinition.h:65
void FinishFlow()
Definition FlowDefinitionBase.cpp:23
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ApplyMaterialTransition()

void UEnemyDespawnDefinition::ApplyMaterialTransition ( AEnemyCharacterBase InEnemyCharacter,
const FMaterialOpacityTransition InTransition 
)
private
255{
258
259 if (InEnemyCharacter == nullptr)
260 {
261 FinishFlow();
262 return;
263 }
264
265 USkeletalMeshComponent* MeshComp = InEnemyCharacter->GetMesh();
266
267 if (MeshComp == nullptr)
268 {
269 FinishFlow();
270 return;
271 }
272
273 UWorld* World = InEnemyCharacter->GetWorld();
274
275 if (World == nullptr)
276 {
277 FinishFlow();
278 return;
279 }
280
281 ActiveEnemyCharacter = InEnemyCharacter;
282 ActiveWorld = World;
284 ActiveTransitionDurationSeconds = FMath::Max(InTransition.DurationSeconds, 0.0f);
287
288 const int32 NumMaterials = MeshComp->GetNumMaterials();
289
290 auto ApplyMaterialToSlot = [&](int32 InSlotIndex, UMaterialInterface* InSourceMaterial)
291 {
292 if (InSlotIndex < 0 || InSlotIndex >= NumMaterials)
293 {
294 return;
295 }
296
297 if (InSourceMaterial == nullptr)
298 {
299 return;
300 }
301
302 UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(InSourceMaterial, this);
303
304 if (DynamicMaterial == nullptr)
305 {
306 return;
307 }
308
309 DynamicMaterial->SetScalarParameterValue(ActiveOpacityParameterName, ActiveTransitionStartOpacity);
310
311 ActiveMaterialSlotIndices.Add(InSlotIndex);
312 OriginalMaterials.Add(MeshComp->GetMaterial(InSlotIndex));
313 DynamicMaterials.Add(DynamicMaterial);
314 MeshComp->SetMaterial(InSlotIndex, DynamicMaterial);
315 };
316
317 if (const FMaterialSlotOverrideWhole* WholeOverride = InTransition.OverrideMaterial.GetPtr<FMaterialSlotOverrideWhole>())
318 {
319 for (int32 SlotIndex = 0; SlotIndex < NumMaterials; ++SlotIndex)
320 {
321 ApplyMaterialToSlot(SlotIndex, WholeOverride->OverrideMaterial.Get());
322 }
323 }
324 else if (const FMaterialSlotOverrideByIndex* IndexedOverride = InTransition.OverrideMaterial.GetPtr<FMaterialSlotOverrideByIndex>())
325 {
326 for (int32 SlotIndex = 0; SlotIndex < IndexedOverride->OverrideMaterials.Num(); ++SlotIndex)
327 {
328 ApplyMaterialToSlot(SlotIndex, IndexedOverride->OverrideMaterials[SlotIndex].Get());
329 }
330 }
331
332 if (DynamicMaterials.IsEmpty())
333 {
335 return;
336 }
337
339 {
340 MaterialTransitionStartTime = World->GetTimeSeconds();
341 FTimerManager& WorldTimerManager = World->GetTimerManager();
342 WorldTimerManager.SetTimer(MaterialTransitionTimerHandle, this, &ThisClass::UpdateMaterialTransition, 0.01f, true);
343 return;
344 }
345
346 for (UMaterialInstanceDynamic* DynamicMaterial : DynamicMaterials)
347 {
348 DynamicMaterial->SetScalarParameterValue(ActiveOpacityParameterName, ActiveTransitionEndOpacity);
349 }
350
352}
TArray< TObjectPtr< UMaterialInstanceDynamic > > DynamicMaterials
Definition EnemyDespawnDefinition.h:90
void RestoreMaterialSlots()
Definition EnemyDespawnDefinition.cpp:414
float ActiveTransitionEndOpacity
Definition EnemyDespawnDefinition.h:107
void ClearMaterialTransitionTimer()
Definition EnemyDespawnDefinition.cpp:402
TArray< TObjectPtr< UMaterialInterface > > OriginalMaterials
Definition EnemyDespawnDefinition.h:87
float ActiveTransitionStartOpacity
Definition EnemyDespawnDefinition.h:106
void CompleteMaterialTransition()
Definition EnemyDespawnDefinition.cpp:145
TWeakObjectPtr< UWorld > ActiveWorld
Definition EnemyDespawnDefinition.h:81
FName ActiveOpacityParameterName
Definition EnemyDespawnDefinition.h:108
FTimerHandle MaterialTransitionTimerHandle
Definition EnemyDespawnDefinition.h:102
TArray< int32 > ActiveMaterialSlotIndices
Definition EnemyDespawnDefinition.h:84
float MaterialTransitionStartTime
Definition EnemyDespawnDefinition.h:104
float ActiveTransitionDurationSeconds
Definition EnemyDespawnDefinition.h:105
float DurationSeconds
Definition MaterialTransitionDefinition.h:58
FInstancedStruct OverrideMaterial
Definition MaterialTransitionDefinition.h:52
FName OpacityParameterName
Definition MaterialTransitionDefinition.h:55
float StartOpacity
Definition MaterialTransitionDefinition.h:61
float EndOpacity
Definition MaterialTransitionDefinition.h:64
Definition MaterialTransitionDefinition.h:22
Definition MaterialTransitionDefinition.h:32
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ClearMaterialTransitionTimer()

void UEnemyDespawnDefinition::ClearMaterialTransitionTimer ( )
private
403{
404 if (ActiveWorld.IsValid() == false)
405 {
406 return;
407 }
408
409 FTimerManager& WorldTimerManager = ActiveWorld->GetTimerManager();
410 WorldTimerManager.ClearTimer(MaterialTransitionTimerHandle);
411}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CompleteMaterialTransition()

void UEnemyDespawnDefinition::CompleteMaterialTransition ( )
private
146{
148 {
150 return;
151 }
152
153 FinishFlow();
154}
void ActivateDespawnNiagara()
Definition EnemyDespawnDefinition.cpp:101
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CreateCopyPoseProxyMesh()

USkeletalMeshComponent * UEnemyDespawnDefinition::CreateCopyPoseProxyMesh ( AEnemyCharacterBase InEnemyCharacter)
private
158{
160
161 if (InEnemyCharacter == nullptr)
162 {
163 return nullptr;
164 }
165
166 USkeletalMeshComponent* SourceMesh = InEnemyCharacter->GetMesh();
167 if (SourceMesh == nullptr || SourceMesh->GetSkeletalMeshAsset() == nullptr)
168 {
169 return nullptr;
170 }
171
172 UWorld* World = InEnemyCharacter->GetWorld();
173 if (World == nullptr)
174 {
175 return nullptr;
176 }
177
178 AActor* ProxyActor = World->SpawnActor<AActor>(AActor::StaticClass(), SourceMesh->GetComponentTransform());
179 if (ProxyActor == nullptr)
180 {
181 return nullptr;
182 }
183
184#if WITH_EDITOR
185 ProxyActor->SetFolderPath(FName(TEXT("EffectProxy/EnemyDespawn")));
186#endif
187
188 USkeletalMeshComponent* ProxyMesh = NewObject<USkeletalMeshComponent>(ProxyActor, TEXT("EnemyDespawnCopyPoseMesh"));
189 if (ProxyMesh == nullptr)
190 {
191 ProxyActor->Destroy();
192 return nullptr;
193 }
194
195 ProxyActor->SetRootComponent(ProxyMesh);
196 ProxyActor->AddInstanceComponent(ProxyMesh);
197 ProxyMesh->RegisterComponent();
198 ProxyMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
199 ProxyMesh->SetReceivesDecals(false);
200 ProxyMesh->SetCastShadow(false);
201 ProxyMesh->bCastDynamicShadow = false;
202 ProxyMesh->SetSkeletalMesh(SourceMesh->GetSkeletalMeshAsset(), false);
203 ProxyMesh->SetWorldTransform(SourceMesh->GetComponentTransform());
204 ProxyMesh->AttachToComponent(SourceMesh, FAttachmentTransformRules::KeepWorldTransform);
205 ProxyMesh->SetAnimationMode(EAnimationMode::AnimationBlueprint);
206 ProxyMesh->SetAnimInstanceClass(UEnemyDespawnCopyPoseAnimInstance::StaticClass());
207 ProxyMesh->TickAnimation(0.0f, false);
208 ProxyMesh->RefreshBoneTransforms();
209 ProxyMesh->DetachFromComponent(FDetachmentTransformRules::KeepWorldTransform);
210 ProxyMesh->SetWorldTransform(SourceMesh->GetComponentTransform());
211 ProxyMesh->SetComponentTickEnabled(false);
212 ProxyMesh->SetVisibility(false, false);
213 ProxyMesh->SetHiddenInGame(true, false);
214
215 ActiveCopyPoseProxyActor = ProxyActor;
216 ActiveCopyPoseProxyMesh = ProxyMesh;
218 return ProxyMesh;
219}
TWeakObjectPtr< UWorld > ActiveCopyPoseProxyWorld
Definition EnemyDespawnDefinition.h:99
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DestroyCopyPoseProxy()

void UEnemyDespawnDefinition::DestroyCopyPoseProxy ( )
private
236{
237 if (ActiveCopyPoseProxyWorld.IsValid())
238 {
239 FTimerManager& WorldTimerManager = ActiveCopyPoseProxyWorld->GetTimerManager();
240 WorldTimerManager.ClearTimer(CopyPoseProxyCleanupTimerHandle);
241 }
242
244 {
245 ActiveCopyPoseProxyActor->Destroy();
246 }
247
248 ActiveCopyPoseProxyActor = nullptr;
249 ActiveCopyPoseProxyMesh = nullptr;
251}
FTimerHandle CopyPoseProxyCleanupTimerHandle
Definition EnemyDespawnDefinition.h:103
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetDespawnMaterialTransition()

FORCEINLINE FMaterialOpacityTransition UEnemyDespawnDefinition::GetDespawnMaterialTransition ( ) const
inline
37 {
39 }
FMaterialOpacityTransition DespawnMaterialTransition
Definition EnemyDespawnDefinition.h:74

◆ HandleFlowFinished()

void UEnemyDespawnDefinition::HandleFlowFinished ( )
overrideprotectedvirtual

UFlowDefinitionBase(으)로부터 재구현되었습니다.

51{
52 Super::HandleFlowFinished();
55
56 TFunction<void()> FinishedCallback = MoveTemp(OnDespawnFlowFinished);
57 OnDespawnFlowFinished = nullptr;
58
59 if (FinishedCallback)
60 {
61 FinishedCallback();
62 }
63}
TFunction< void()> OnDespawnFlowFinished
Definition EnemyDespawnDefinition.h:109
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ HandleFlowReset()

void UEnemyDespawnDefinition::HandleFlowReset ( )
overrideprotectedvirtual

UFlowDefinitionBase(으)로부터 재구현되었습니다.

67{
68 Super::HandleFlowReset();
72 OnDespawnFlowFinished = nullptr;
73}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ HandleFlowStarted()

void UEnemyDespawnDefinition::HandleFlowStarted ( UObject *  InFlowOwner)
overrideprotectedvirtual

UFlowDefinitionBase(으)로부터 재구현되었습니다.

44{
45 Super::HandleFlowStarted(InFlowOwner);
46 PlayDespawnFlow(Cast<AEnemyCharacterBase>(InFlowOwner));
47}
void PlayDespawnFlow(AEnemyCharacterBase *InEnemyCharacter)
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ PlayDespawnFlow()

void UEnemyDespawnDefinition::PlayDespawnFlow ( AEnemyCharacterBase InEnemyCharacter)
protected
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ PlayDespawnFlow_Implementation()

void UEnemyDespawnDefinition::PlayDespawnFlow_Implementation ( AEnemyCharacterBase InEnemyCharacter)
protectedvirtual
77{
78 PrepareDespawnNiagara(InEnemyCharacter);
80}
void ApplyMaterialTransition(AEnemyCharacterBase *InEnemyCharacter, const FMaterialOpacityTransition &InTransition)
Definition EnemyDespawnDefinition.cpp:254
void PrepareDespawnNiagara(AEnemyCharacterBase *InEnemyCharacter)
Definition EnemyDespawnDefinition.cpp:83
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ PrepareDespawnNiagara()

void UEnemyDespawnDefinition::PrepareDespawnNiagara ( AEnemyCharacterBase InEnemyCharacter)
private
84{
85 if (DespawnNiagaraSystem == nullptr)
86 {
87 return;
88 }
89
90 const USkeletalMeshComponent* ProxyMesh = CreateCopyPoseProxyMesh(InEnemyCharacter);
91
92 if (ProxyMesh)
93 {
94 return;
95 }
96
97 LOG_ERROR(LogCK, "%s 를 생성하지 못했습니다. ", NAMEOF_VAR(ProxyMesh));
98}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF_VAR(Expr)
Definition CK_UE.h:34
USkeletalMeshComponent * CreateCopyPoseProxyMesh(AEnemyCharacterBase *InEnemyCharacter)
Definition EnemyDespawnDefinition.cpp:157
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RestoreMaterialSlots()

void UEnemyDespawnDefinition::RestoreMaterialSlots ( )
private
415{
416 AEnemyCharacterBase* EnemyCharacter = ActiveEnemyCharacter.Get();
417
418 if (USkeletalMeshComponent* MeshComp = EnemyCharacter ? EnemyCharacter->GetMesh() : nullptr)
419 {
420 for (int32 Index = 0; Index < ActiveMaterialSlotIndices.Num(); ++Index)
421 {
422 if (OriginalMaterials.IsValidIndex(Index))
423 {
424 MeshComp->SetMaterial(ActiveMaterialSlotIndices[Index], OriginalMaterials[Index]);
425 }
426 }
427 }
428
429 ActiveEnemyCharacter.Reset();
430 ActiveWorld.Reset();
432 OriginalMaterials.Reset();
433 DynamicMaterials.Reset();
434}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ScheduleCopyPoseProxyCleanup()

void UEnemyDespawnDefinition::ScheduleCopyPoseProxyCleanup ( )
private
223{
224 if (ActiveCopyPoseProxyWorld.IsValid() == false || DespawnNiagaraPlayTime <= 0.0f)
225 {
227 return;
228 }
229
230 FTimerManager& WorldTimerManager = ActiveCopyPoseProxyWorld->GetTimerManager();
231 WorldTimerManager.SetTimer(CopyPoseProxyCleanupTimerHandle, this, &ThisClass::DestroyCopyPoseProxy, DespawnNiagaraPlayTime, false);
232}
float DespawnNiagaraPlayTime
Definition EnemyDespawnDefinition.h:71
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ StartEnemyDespawnFlow() [1/2]

bool UEnemyDespawnDefinition::StartEnemyDespawnFlow ( AEnemyCharacterBase InEnemyCharacter)
17{
18 return StartEnemyDespawnFlow(InEnemyCharacter, TFunction<void()>());
19}
bool StartEnemyDespawnFlow(AEnemyCharacterBase *InEnemyCharacter)
Definition EnemyDespawnDefinition.cpp:16
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ StartEnemyDespawnFlow() [2/2]

bool UEnemyDespawnDefinition::StartEnemyDespawnFlow ( AEnemyCharacterBase InEnemyCharacter,
TFunction< void()> &&  InOnFlowFinished 
)
23{
24 OnDespawnFlowFinished = MoveTemp(InOnFlowFinished);
25
26 if (StartFlow(InEnemyCharacter))
27 {
28 return true;
29 }
30
31 TFunction<void()> FailedCallback = MoveTemp(OnDespawnFlowFinished);
32 OnDespawnFlowFinished = nullptr;
33
34 if (FailedCallback)
35 {
36 FailedCallback();
37 }
38
39 return false;
40}
bool StartFlow(UObject *InFlowOwner)
Definition FlowDefinitionBase.cpp:7
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateMaterialTransition()

void UEnemyDespawnDefinition::UpdateMaterialTransition ( )
private
356{
357 AEnemyCharacterBase* EnemyCharacter = ActiveEnemyCharacter.Get();
358
359 if (EnemyCharacter == nullptr)
360 {
361 FinishFlow();
362 return;
363 }
364
365 UWorld* World = EnemyCharacter->GetWorld();
366
367 if (World == nullptr)
368 {
369 FinishFlow();
370 return;
371 }
372
373 const float ElapsedSeconds = World->GetTimeSeconds() - MaterialTransitionStartTime;
374
375 float Alpha = 0.0f;
376
378 {
379 Alpha = FMath::Clamp(ElapsedSeconds / ActiveTransitionDurationSeconds, 0.0f, 1.0f);
380 }
381 else
382 {
383 Alpha = 1.0f;
384 }
385
386 const float Opacity = FMath::Lerp(ActiveTransitionStartOpacity, ActiveTransitionEndOpacity, Alpha);
387
388 for (UMaterialInstanceDynamic* DynamicMaterial : DynamicMaterials)
389 {
390 DynamicMaterial->SetScalarParameterValue(ActiveOpacityParameterName, Opacity);
391 }
392
393 if (Alpha + KINDA_SMALL_NUMBER < 1.0f)
394 {
395 return;
396 }
397
399}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ ActiveCopyPoseProxyActor

TObjectPtr<AActor> UEnemyDespawnDefinition::ActiveCopyPoseProxyActor
private

◆ ActiveCopyPoseProxyMesh

TObjectPtr<USkeletalMeshComponent> UEnemyDespawnDefinition::ActiveCopyPoseProxyMesh
private

◆ ActiveCopyPoseProxyWorld

TWeakObjectPtr<UWorld> UEnemyDespawnDefinition::ActiveCopyPoseProxyWorld
private

◆ ActiveEnemyCharacter

TWeakObjectPtr<AEnemyCharacterBase> UEnemyDespawnDefinition::ActiveEnemyCharacter
private

◆ ActiveMaterialSlotIndices

TArray<int32> UEnemyDespawnDefinition::ActiveMaterialSlotIndices
private

◆ ActiveOpacityParameterName

FName UEnemyDespawnDefinition::ActiveOpacityParameterName = TEXT("Opacity")
private

◆ ActiveTransitionDurationSeconds

float UEnemyDespawnDefinition::ActiveTransitionDurationSeconds = 0.0f
private

◆ ActiveTransitionEndOpacity

float UEnemyDespawnDefinition::ActiveTransitionEndOpacity = 0.0f
private

◆ ActiveTransitionStartOpacity

float UEnemyDespawnDefinition::ActiveTransitionStartOpacity = 1.0f
private

◆ ActiveWorld

TWeakObjectPtr<UWorld> UEnemyDespawnDefinition::ActiveWorld
private

◆ CopyPoseProxyCleanupTimerHandle

FTimerHandle UEnemyDespawnDefinition::CopyPoseProxyCleanupTimerHandle
private

◆ DespawnMaterialTransition

FMaterialOpacityTransition UEnemyDespawnDefinition::DespawnMaterialTransition = FMaterialOpacityTransition(1.0f, 0.0f)
protected

◆ DespawnNiagaraPlayTime

float UEnemyDespawnDefinition::DespawnNiagaraPlayTime = 2.0f
protected

◆ DespawnNiagaraSystem

TObjectPtr<UNiagaraSystem> UEnemyDespawnDefinition::DespawnNiagaraSystem
protected

◆ DynamicMaterials

TArray<TObjectPtr<UMaterialInstanceDynamic> > UEnemyDespawnDefinition::DynamicMaterials
private

◆ MaterialTransitionStartTime

float UEnemyDespawnDefinition::MaterialTransitionStartTime = 0.0f
private

◆ MaterialTransitionTimerHandle

FTimerHandle UEnemyDespawnDefinition::MaterialTransitionTimerHandle
private

◆ OnDespawnFlowFinished

TFunction<void()> UEnemyDespawnDefinition::OnDespawnFlowFinished
private

◆ OriginalMaterials

TArray<TObjectPtr<UMaterialInterface> > UEnemyDespawnDefinition::OriginalMaterials
private

◆ SkeletalMeshUserParameterName

FName UEnemyDespawnDefinition::SkeletalMeshUserParameterName = TEXT("User.SkeletalMesh")
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: