Projekt for SPIE - Avatar for safety briefing / managment event
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

63 lines
2.0 KiB

// 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<UArchVisCineCameraComponent>(GetAttachParent()))
{
CameraComponent = Parent;
}
else if (const AArchVisCineCameraActor* Owner = Cast<AArchVisCineCameraActor>(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