Files

44 lines
1.3 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "AnimNotify_ItemAction.h"
#include "Components/SkeletalMeshComponent.h"
#include "Engine/World.h"
#include "FpsPlayer.h"
void UAnimNotify_ItemAction::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation,
const FAnimNotifyEventReference& EventReference)
{
Super::Notify(MeshComp, Animation, EventReference);
if (!MeshComp)
{
return;
}
// L'editeur d'animation joue les notifies dans sa fenetre de previsualisation,
// sur un mesh de preview qui n'appartient a aucun pawn. Le Cast ci-dessous
// suffirait a s'en proteger, mais le monde de preview n'est pas un monde de
// jeu et rien de ce qui suit n'y aurait de sens : on s'arrete plus tot.
const UWorld* World = MeshComp->GetWorld();
if (!World || !World->IsGameWorld())
{
return;
}
// Le montage tourne sur les bras ou sur le corps, deux composants du pawn :
// dans les deux cas le proprietaire du mesh EST le personnage.
if (AFpsPlayer* Player = Cast<AFpsPlayer>(MeshComp->GetOwner()))
{
Player->TriggerHeldItemAction();
}
}
FString UAnimNotify_ItemAction::GetNotifyName_Implementation() const
{
// Ce qui s'affiche sur le marqueur dans la timeline du montage. Sans cette
// surcharge le moteur y ecrirait le nom de la classe, prefixe compris.
return TEXT("Item Action");
}