This works. It is horrible and suggests that something else is seriously wrong somewhere:
void ADungeonEye::Tick(float delta_time)
{
FRotator rotation;
Super::Tick(delta_time);
// If we pump the control rotation from the controller into the light's relative rotation, then the
// pitch input works at 90 degrees to the "forward" axis.
rotation = GetController()->GetControlRotation();
rotation.Yaw += 90.0;
m_light->SetRelativeRotation(rotation);
}
Note: The eye’s starting position is rotated by 90 degrees to ensure it is looking at other things in the scene when it starts. Removing that rotation means that this works as expected without the 90 degree offset in this calculation.
FFS!!!