// Copyright Voulz 2021-2025. All Rights Reserved. #include "ArchVisSceneCaptureComponent2D.h" #include "ArchVisCineCameraActor.h" #include "ArchVisCineCameraComponent.h" #define CURRENT_LOG_CATEGORY LogArchVisTools const AActor* UArchVisSceneCaptureComponent2D::GetViewOwner() const { return GetOwner(); // Needed for the View Extension to find the ArchVisCineCameraComponent } void UArchVisSceneCaptureComponent2D::GetCameraView(float DeltaTime, FMinimalViewInfo& OutMinimalViewInfo) { if (UArchVisCineCameraComponent* CameraComponent = FindCameraComponent()) { CameraComponent->GetCameraView(DeltaTime, OutMinimalViewInfo); SetCameraView(OutMinimalViewInfo); //to ensure its location matches the given view return; } Super::GetCameraView(DeltaTime, OutMinimalViewInfo); } UArchVisCineCameraComponent* UArchVisSceneCaptureComponent2D::FindCameraComponent() const { UArchVisCineCameraComponent* CameraComponent = nullptr; if (ArchVisCineCameraComponent.IsValid()) { CameraComponent = ArchVisCineCameraComponent.Get(); } else if (const AArchVisCineCameraActor* CameraActor = ArchVisCineCameraActor.Get()) { CameraComponent = CameraActor->GetArchVisCineCameraComponent(); } else if (UArchVisCineCameraComponent* Parent = Cast(GetAttachParent())) { CameraComponent = Parent; } else if (const AArchVisCineCameraActor* Owner = Cast(GetOwner())) { CameraComponent = Owner->GetArchVisCineCameraComponent(); } return CameraComponent; } void UArchVisSceneCaptureComponent2D::UpdateSceneCaptureContents(FSceneInterface* Scene, ISceneRenderBuilder& SceneRenderBuilder) { bUseCustomProjectionMatrix = false; // need to ensure this is reset to false as we forced it to be true previously FMinimalViewInfo ViewInfo; GetCameraView(0.0f, ViewInfo); if (const UArchVisCineCameraComponent* CameraComponent = FindCameraComponent()) { CustomNearClippingPlane = CameraComponent->CustomNearClippingPlane; } Super::UpdateSceneCaptureContents(Scene, SceneRenderBuilder); } #undef CURRENT_LOG_CATEGORY