Exemple #1
0
void ANimModCharacter::StopAllAnimMontages()
{
	USkeletalMeshComponent* UseMesh = GetPawnMesh();
	if (UseMesh && UseMesh->AnimScriptInstance)
	{
		UseMesh->AnimScriptInstance->Montage_Stop(0.0f);
	}
}
Exemple #2
0
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;
}
Exemple #4
0
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);
		}
	}
}
Exemple #5
0
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;
}