48{
51
52 if (InEnemyCharacter == nullptr)
53 {
55 return;
56 }
57
58 USkeletalMeshComponent* MeshComp = InEnemyCharacter->GetMesh();
59
60 if (MeshComp == nullptr)
61 {
63 return;
64 }
65
66 UWorld* World = InEnemyCharacter->GetWorld();
67
68 if (World == nullptr)
69 {
71 return;
72 }
73
80
81 const int32 NumMaterials = MeshComp->GetNumMaterials();
82
83 auto ApplyMaterialToSlot = [&](int32 InSlotIndex, UMaterialInterface* InSourceMaterial)
84 {
85 if (InSlotIndex < 0 || InSlotIndex >= NumMaterials)
86 {
87 return;
88 }
89
90 if (InSourceMaterial == nullptr)
91 {
92 return;
93 }
94
95 UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(InSourceMaterial, this);
96
97 if (DynamicMaterial == nullptr)
98 {
99 return;
100 }
101
103
107 MeshComp->SetMaterial(InSlotIndex, DynamicMaterial);
108 };
109
111 {
112 for (int32 SlotIndex = 0; SlotIndex < NumMaterials; ++SlotIndex)
113 {
114 ApplyMaterialToSlot(SlotIndex, WholeOverride->OverrideMaterial.Get());
115 }
116 }
118 {
119 for (int32 SlotIndex = 0; SlotIndex < IndexedOverride->OverrideMaterials.Num(); ++SlotIndex)
120 {
121 ApplyMaterialToSlot(SlotIndex, IndexedOverride->OverrideMaterials[SlotIndex].Get());
122 }
123 }
124
126 {
128 return;
129 }
130
132 {
134 FTimerManager& WorldTimerManager = World->GetTimerManager();
136 return;
137 }
138
140 {
142 }
143
145}
float ActiveTransitionDurationSeconds
Definition EnemySpawnDefinition.h:73
void ClearMaterialTransitionTimer()
Definition EnemySpawnDefinition.cpp:196
FName ActiveOpacityParameterName
Definition EnemySpawnDefinition.h:76
TWeakObjectPtr< AEnemyCharacterBase > ActiveEnemyCharacter
Definition EnemySpawnDefinition.h:57
TArray< TObjectPtr< UMaterialInstanceDynamic > > DynamicMaterials
Definition EnemySpawnDefinition.h:69
float ActiveTransitionStartOpacity
Definition EnemySpawnDefinition.h:74
float MaterialTransitionStartTime
Definition EnemySpawnDefinition.h:72
TArray< TObjectPtr< UMaterialInterface > > OriginalMaterials
Definition EnemySpawnDefinition.h:66
float ActiveTransitionEndOpacity
Definition EnemySpawnDefinition.h:75
TWeakObjectPtr< UWorld > ActiveWorld
Definition EnemySpawnDefinition.h:60
TArray< int32 > ActiveMaterialSlotIndices
Definition EnemySpawnDefinition.h:63
FTimerHandle MaterialTransitionTimerHandle
Definition EnemySpawnDefinition.h:71
void RestoreMaterialSlots()
Definition EnemySpawnDefinition.cpp:208
void FinishFlow()
Definition FlowDefinitionBase.cpp:23
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