void ANimModCharacter::StopAllAnimMontages() { USkeletalMeshComponent* UseMesh = GetPawnMesh(); if (UseMesh && UseMesh->AnimScriptInstance) { UseMesh->AnimScriptInstance->Montage_Stop(0.0f); } }
void ANimModCharacter::StopAnimMontage(class UAnimMontage* AnimMontage) { USkeletalMeshComponent* UseMesh = GetPawnMesh(); if (AnimMontage && UseMesh && UseMesh->AnimScriptInstance && UseMesh->AnimScriptInstance->Montage_IsPlaying(AnimMontage)) { UseMesh->AnimScriptInstance->Montage_Stop(AnimMontage->BlendOutTime); } }
float AAmethystCharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName) { USkeletalMeshComponent* UseMesh = GetPawnMesh(); if (AnimMontage && UseMesh && UseMesh->AnimScriptInstance) { return UseMesh->AnimScriptInstance->Montage_Play(AnimMontage, InPlayRate); } return 0.0f; }
void ANimModCharacter::OnMontageEnded(UAnimMontage* Montage, bool bInterrupted) { if (CurrentWeapon == nullptr) return; USkeletalMeshComponent* UseMesh = GetPawnMesh(); if (UseMesh && UseMesh->AnimScriptInstance) { if (!UseMesh->AnimScriptInstance->Montage_IsPlaying(nullptr)) { UAnimMontage *idleAnimation = CurrentWeapon->GetIdleAnimation(); if (idleAnimation) PlayAnimMontage(idleAnimation); } } }
float ANimModCharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName) { USkeletalMeshComponent* UseMesh = GetPawnMesh(); if (AnimMontage && UseMesh && UseMesh->AnimScriptInstance) { bool isPlaying = UseMesh->AnimScriptInstance->Montage_IsPlaying(AnimMontage); if (!isPlaying) UseMesh->AnimScriptInstance->Montage_Stop(0.0f, AnimMontage); float rtn = UseMesh->AnimScriptInstance->Montage_Play(AnimMontage, InPlayRate); /*FOnMontageEnded EndDelegate; EndDelegate.BindUObject(this, &ANimModCharacter::OnMontageEnded); UseMesh->AnimScriptInstance->Montage_SetEndDelegate(EndDelegate, AnimMontage);*/ return rtn; } return 0.0f; }