MainViewのViewportSizeとカメラ位置,カメラ姿勢の取得

UE4.27で確認

// Get Current View Info (EditorMode, PlayMode).
auto GetCurrentViewportInfo = [](const UWorld* world, FVector2D& out_viewport_size, FVector& out_view_location, FQuat& out_view_quat)
{
    if (!world)
        return;

#if WITH_EDITOR
    if (world->WorldType == EWorldType::Editor || world->WorldType == EWorldType::EditorPreview)
    {
        // EditorMode.
        // Use First Editor Viewport.
        for (FLevelEditorViewportClient* level_viewport_clients : GEditor->GetLevelViewportClients())
        {
            if (level_viewport_clients && level_viewport_clients->IsPerspective())
            {
                out_viewport_size = level_viewport_clients->Viewport->GetSizeXY();
                out_view_location = level_viewport_clients->GetViewLocation();
                out_view_quat = level_viewport_clients->GetViewRotation().Quaternion();
                break;
            }
        }
    }
    else
#endif
    {
        // Non EditorMode.
        // Use First PlayerCamera.
        if (auto* camera_manager = UGameplayStatics::GetPlayerCameraManager(world, 0))
        {
            GEngine->GameViewport->GetViewportSize(out_viewport_size);
            out_view_location = camera_manager->GetCameraLocation();
            out_view_quat = camera_manager->GetCameraRotation().Quaternion();
        }
    }

    return;
};

const UWorld* world = [ワールド];
FVector2D out_viewport_size;
FVector out_view_location;
FQuat out_view_quat;
// Get Info.
GetCurrentViewportInfo(world, out_viewport_size, out_view_location, out_view_quat);