Problem with the playercontroller not switching with an unpossess and possess of new char

Hi, first post here. I have some basic coding experience but this is my first coding venture within modern UE. This project is using UE 5.7, and using the PaperZD plugin. I’ve tried alot of solutions from the forums and none of them have 100% fixed the problem.

My setup:

I have a playercontroller, and a character base (eyeonic-charBase) with 2 child characters (eyeonic-JF and eyeonic-Stefan).

I am using an Enhanced Input to swap from eyeonic-JF to eyeonic-Stefan.

The default pawn in the world is set to None.

What is happening:

Both actors spawn fine, and eyeonic-JF is possessed, along with working IMC.
The enhanced input triggers, and then according to printStrings I’ve plugged in - the character successfully unposseses eyeonic-JF and possesses eyeonic–Stefan, but my IMC seems to stay attached to eyeonic-JF. Screenshots of the code:

Beginplay in playercontroller:

(Delay in 2nd pic is to allow onPossess to finish before the end of event begin finishes, based on me moving all my code around to try to make this problem work out)

onPossess in playercontroller:

(2nd pic is just binds I have at the moment)

Enhanced Input swapChar:

(The unchained stuff are things I’ve tried, in different orders, and still cant get it to work)

Example screenshots:

1st pic: Both players have spawned, and “eyeonic-JF” (currentCharacter) is the player that is possessed (on left). The 2nd character “eyeonic-Stefan” (alternateCharacter) is on the right

(the dead anim is temporarily loaded onto the other character, sorry for the visual confusion)

2nd pic: The Enhanced Input has triggered, I have unpossessed eyeonic-JF and posessed eyeonic-Stefan. The camera is now focused on the correct new player standing in the same location, but I am only able to control the 1st character (eyeonic-JF) which is on the right now, and is not being followed by camera. The IMC seems to never leave this character, despite there being no default pawn set in the world, and I have no other controllers set up.

I have tried moving the Remove/Add Mapping Contexts into the character blueprints, I’ve tried endless combinations of signal flow with what’s in that code. I’ve looked at a ton of things explaining this problem and none of the solutions have worked, so I am for the first time in this first coding project - stumped. Any thoughts?

Well I fixed it. I had a Do Once at the beginning of the player controller onPossess (in photo above) which did not need to be there, so keeping the add mapping context in the possess but allowing it to call multiple times in the playercontroller was the answer. For anyone else who has this stupid question - it also works if you use the possess functions of the characters themselves but this is easier - I just didnt know what was causing the simple code to fail.