44 lines
1.3 KiB
C++
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");
|
|
}
|