How can I remove an actor from the Animation sharing manager?

Hello everyone,

I am quite new to Unreal and am working on a project that involves having a lot of enemies on the screen. So stumbled upon the animation sharing plugin that would work perfectly for my zombie horde.
I was able to make it work with my zombies (even though the documentation was not too clear for me), but I am having a few issues I would like to resolve.

  1. Whenever I kill one of my zombies the Animation Sharing State Processor keeps trying to process the actor’s state and it generates thousands of errors. In the end it leads to the editor crashing, I am not 100% sure this is the cause but I am assuming it is. I have tried adding an Is Valid Node to prevent the errors, and even though that works, the editor still crashes after every 2-3 debug plays. I still have the feeling the cause is related to this somehow. I was wondering if there was a way to deregister the actor from the animation sharing manager once I want to kill it, but I have not found a way to do it.

  2. Also when I kill a zombie, an important part of the project, to provide the feeling that I want, is that the zombie turns into a ragdoll. What is happening right now with the animation sharing system is that the zombie keeps its last state of animation, but the ragdoll physics simulation I had setup before is just not working anymore. I tried a few different things (hacks ), but none of them worked. Any idea if this a limitation of the system or maybe there is a way I could achieve this?

Just FYI, the project is blueprint only. I want to start flirting with C++ but have not gotten there yet.

Thanks already

1 Like

Hi,

This answer is too late, but I couldn’t find an answer online, so I decided to post my solution here:

I made a C++ Blueprint Lib class to unregister the actor. The plugin implemented everything to unregister an actor but there is no BP function to access the logic. I use this code to create a BP-node to unregister an actor:

AnimSharingUnregisterFL.h :

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "AnimationSharingTypes.h"
#include "AnimationSharingManager.h"
#include "AnimSharingUnregisterFL.generated.h"

/**
 * 
 */
UCLASS()
class CASTLE_API UAnimSharingUnregisterFL : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
		UFUNCTION(BlueprintCallable, Category = "AnimationSharing")
		static void UnregisterActorLibBP(UAnimationSharingManager* Manager, AActor* Actor);

};

AnimSharingUnregisterFL.cpp:

#include "AnimSharingUnregisterFL.h"

void UAnimSharingUnregisterFL::UnregisterActorLibBP(UAnimationSharingManager* Manager, AActor* Actor)
{
    if (Actor != nullptr)
    {
        Manager->UAnimationSharingManager::UnregisterActor(Actor);
    }

}

I used this function in the actor BP with EventEndPlay.

Kind regards,
Lorenz

3 Likes

i have tried for hours to get this to work but i get tons of errors trying this. are using unreal engien new c++ class then selecting blueprint function library for the class? i tied that and then copy pasted your code into the two files that come up in visual studio and i just get a lot of erroes. ive never tried doing a custom blueprint node before sorry any help is massively welcomed!