Why won't client pawns animate across server?

So, i’ve gotten stuck on another probably simple problem, but i can’t see what might be going wrong. I am assigning pawns to players through C++, and the animations are handled through blueprints. The client can see their own animation, but can only see each other’s idle animation, the pawn physically moves around, but it does not transition to other animations. I have the MeshComponentUpdateFlag set to always tick and update bones.

I have a character class, MyCharacter. in the constructor of my character, the skeletal mesh and animation component are assigned as follows:

enter code here/* Component attachment / configuration / creation */
	static ConstructorHelpers::FObjectFinder<USkeletalMesh> MyMeshObj(TEXT("SkeletalMesh'/Game/Characters/MyCharact/Mesh/MS_Ipose.MS_Ipose'"));
	static ConstructorHelpers::FObjectFinder<UBlueprint> MyAnimObj(TEXT("AnimBlueprint'/Game/Characters/MyCharact/Animations/BP_My_ANIM.BP_My_ANIM'"));
	

	if (MyMeshObj.Object != NULL)
	{
		MyMesh = (USkeletalMesh*)MyMeshObj.Object;
		
	}
	if (MyAnimObj.Object != NULL)
	{
		MyAnim = (UAnimBlueprint*)MyAnimObj.Object;
		MyAnimClass = (UClass*)MyAnimObj.Object->GeneratedClass;
	}

Then, in my GameMode class, I have overridden the SpawnDefaultPawnFor() function as follows:

 `APawn* AMyGameMode::SpawnDefaultPawnFor(AController* NewPlayer, class AActor* StartSpot)
    {
    	// don't allow pawn to be spawned with any pitch or roll
    	FRotator StartRotation(ForceInit);
    	StartRotation.Yaw = StartSpot->GetActorRotation().Yaw;
    	FVector StartLocation = StartSpot->GetActorLocation();
    
    	FActorSpawnParameters SpawnInfo;
    	SpawnInfo.Instigator = Instigator;
    	APawn* ResultPawn; = GetWorld()->SpawnActor<APawn>(MyCharacter::StaticClass(), StartLocation, StartRotation, SpawnInfo);
return ResultPawn;`

Is it the use of the MyCharacter::StaticClass() that is causing it not to update the animation across the server?

sorry to ask, but i cannot for the life of me fathom what might be going wrong.

I figured out the problem and got the animations to finally replicate across the server. when assigning the animation blueprints in code like this, each state that changes the animations in the blueprints must be replicated.

so in the header:

UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category = Team2Pawn) 
bool bIsRunning;
		UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category = Team2Pawn) 
bool bIsWalkingY;
		UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category = Team2Pawn)
bool bIsWalkingX;
		UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category = Team2Pawn) 
bool bIsJumping;

Etc…

then, in the cpp:

void ATeam2Character::GetLifetimeReplicatedProps(TArray< FLifetimeProperty > &OutLifetimeProps) const
{

DOREPLIFETIME(ATeam2Character, bIsRunning);
	DOREPLIFETIME(ATeam2Character, bIsWalkingX);
	DOREPLIFETIME(ATeam2Character, bIsWalkingY);
	DOREPLIFETIME(ATeam2Character, bIsJumping);
	DOREPLIFETIME(ATeam2Character, bIsAttacking);

}

i guess its obvious enough, but i wish there was a little more clarification on some of these things. blueprints abstract a lot of details. maybe i’ll write a tutorial later.