[Third Person Template] 6DOF Gimbal Lock problem.

I would like to know the solution to this as well. So far this is what I have.

FQuat orgRot(FRotationMatrix::MakeFromZX(GetCapsuleComponent()->GetComponentLocation(), GetCapsuleComponent()->GetForwardVector()).Rotator());
FQuat addInRot(FRotator(0, mouseX, 0));
Controller->SetControlRotation(FRotator(orgRot * addInRot));

This allows my character to walk around the planet with the control rotations down vector always pointed at the worlds center. The mouseX is from the mouseX input and it adds correctly - right up until I reach the axis poles of the world. Then, as detailed above the character flips over on its head as the 90 - (-90) yaw values try to compensate crossing the zero into the opposite range. I keep hearing everyone say that it’s easier in c++ but I was actually able to do this in BLueprint back when I first started on my project. It was simple. The combine rotators node in Blueprints will add rotations together without a problem. I can’t seem to replicate this in code.