178{
180 {
181 LOG_WARNING(LogCKLevel,
"PlayerController가 없어 컷신 중 입력 제한을 적용할 수 없습니다.");
182 return;
183 }
184
185 ACharacter* Character = Cast<ACharacter>(Context.
PlayerController->GetPawn());
186
187 if (Character == nullptr)
188 {
189 LOG_WARNING(LogCKLevel,
"플레이어 캐릭터를 얻어올 수 없어 컷신 중 입력 제한을 적용할 수 없습니다.");
190 return;
191 }
192
194
195 if (UCharacterMovementComponent* MovementComponent = Character->GetCharacterMovement())
196 {
197 MovementComponent->DisableMovement();
198 }
199
200 IAbilitySystemInterface* ASI = Cast<IAbilitySystemInterface>(Character);
201
202 if (ASI == nullptr)
203 {
204 LOG_WARNING(LogCKLevel,
"%s을 얻어올 수 없어 컷신 중 GAS 입력 제한을 적용할 수 없습니다.",
NAMEOF(IAbilitySystemInterface));
205 return;
206 }
207
208 UAbilitySystemComponent* ASC = ASI->GetAbilitySystemComponent();
209
210 if (ASC == nullptr)
211 {
212 LOG_WARNING(LogCKLevel,
"%s을 얻어올 수 없어 컷신 중 GAS 입력 제한을 적용할 수 없습니다.",
NAMEOF(UAbilitySystemComponent));
213 return;
214 }
215
217 ASC->AddLooseGameplayTag(TAG_CHARACTER_STATE_ISBLOCKMOVEMENT);
218 ASC->AddLooseGameplayTag(TAG_CHARACTER_STATE_ISBLOCKINPUT);
219 ASC->CancelAllAbilities();
220}
TObjectPtr< APlayerController > PlayerController
Definition LevelStreamingContext.h:39