Extending CharacterMovementComponent for rotation to surface

Update:

I have the rotation part down and have changed to using quaternions to avoid Gimbal lock. What I can’t seem to do is stop the behaviour of sloped movement in CharacterMovementComponent. Namely, I’ve gone through all the walkable surface checks and hard coded them to be enabled. However, my character still will not walk up/down a certain slope.

I’m thinking of just doing my own component from scratch but I’d like to know either way. Tracing the movement input from the character class, I get the following:

  • MoveForward() - XCharacter.cpp
  • AddMovementInput() - Pawn.cpp
  • AddInputVector() - PawnMovementComponent.cpp
  • Internal_AddMovementInput() - Pawn.cpp
  • Internal_ConsumeMovementInputVector()

I do not know how this input is used from there.
I’ve overridden the following methods from CharacterMovementComponent and have swept them for obvious blocks on sloped movement:

  • SlideAlongSurface()
  • ComputeSlideVector()
  • FindFloor()
  • ComputeGroundMovementDelta()
  • PerformMovement()
  • IsWalkable()
  • ComputeFloorDist()
  • CheckFall()
  • PhysWalking()
  • MoveAlongFloor()

Any advice is appreciated.