Download

C++ AnimNotifyState functions not being executed

Hey all,

I’m having trouble getting C++ AnimNotifyState to work. All I’ve done is created a child class of UAnimNotifyState, overridden Received_NotifyTick, and try printing out whenever it is executed. In blueprints I got it to work right away, this is what the function looks like (yes, it is a different class from my C++ one):

8950414f265433092463a5289c6e0a53f8b86749.png

Here is my header code:



#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotifyState.h"
#include "AnimNotifyState_AnimationState.generated.h"

/**
 * 
 */
UCLASS()
class PROJECT_API UAnimNotifyState_AnimationState : public UAnimNotifyState
{
	GENERATED_BODY()

	virtual bool Received_NotifyTick(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float FrameDeltaTime) const;
	
	
};


Here is my source code:



#include "AnimNotifyState_AnimationState.h"
#include "Kismet/KismetSystemLibrary.h"

bool UAnimNotifyState_AnimationState::Received_NotifyTick(USkeletalMeshComponent * MeshComp, UAnimSequenceBase * Animation, float FrameDeltaTime) const
{
	//Super::Received_NotifyTick(MeshComp, Animation, FrameDeltaTime);
	UKismetSystemLibrary::PrintString(MeshComp, "works");
	return false;
}



What could I be missing? It works fine in BP, and all I’m doing outside of the C++ code is literally replacing the same anim notify that I made in BP with the one I made in C++, so the issue is definitely in the code.

Thanks for any help!

Could it be I’m missing a module or an include or something? Maybe add something in the constructor…? I can’t figure it out :frowning:

did you add start and stop notify on your animation?

8dc6e8084acf04772e0b067021c4b028e585927a.png

recommended function to be used instead Received (they are for blueprints)


void UEmreAnimNotifyState::NotifyBegin(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, float TotalDuration) {
	Super::NotifyBegin(MeshComp, Animation, TotalDuration);
}

void UEmreAnimNotifyState::NotifyEnd(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) {
	Super::NotifyEnd(MeshComp, Animation);
}

Yep, that actually worked. I feel like an idiot now! I was following this guide and he used Received_NotifyBegin so I went with that. Clearly that was a mistake, thanks for the help.