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.
49 lines
1.9 KiB
49 lines
1.9 KiB
// Copyright Voulz 2021-2025. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "SceneViewExtension.h"
|
|
|
|
class UArchVisCineCameraComponent;
|
|
class UArchVisSubsystem;
|
|
|
|
/**
|
|
* A hack class used by ArchVisMoviePipelineDeferredPass to force a specific scene should not be rendered for this view
|
|
*/
|
|
struct FArchVisSceneViewExtensionContextDisableOnce : public FSceneViewExtensionContext
|
|
{
|
|
private:
|
|
//~ FSceneViewExtensionContext Interface
|
|
virtual FName GetRTTI() const override { return TEXT("FArchVisSceneViewExtensionContext"); }
|
|
public:
|
|
FArchVisSceneViewExtensionContextDisableOnce() { }
|
|
FArchVisSceneViewExtensionContextDisableOnce(FSceneInterface* InScene)
|
|
: FSceneViewExtensionContext(InScene)
|
|
{ }
|
|
};
|
|
|
|
|
|
class ARCHVISTOOLS_API FArchVisSceneViewExtension : public FSceneViewExtensionBase
|
|
{
|
|
public:
|
|
FArchVisSceneViewExtension(const FAutoRegister& AutoRegister, UArchVisSubsystem* InArchVisSubsystem);
|
|
|
|
//~ Begin FSceneViewExtensionBase Interface
|
|
virtual void SetupViewFamily(FSceneViewFamily& InViewFamily) override;
|
|
virtual void SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) override;
|
|
virtual void BeginRenderViewFamily(FSceneViewFamily& InViewFamily) override {};
|
|
virtual void PrePostProcessPass_RenderThread(FRDGBuilder& GraphBuilder, const FSceneView& View, const FPostProcessingInputs& Inputs) override {};
|
|
//~ End FSceneViewExtensionBase Interface
|
|
|
|
static FMinimalViewInfo GetCorrectedViewInfo(const UWorld* World, UArchVisCineCameraComponent* ArchVisComponent, const FIntPoint& UnconstrainedViewSize, const FMinimalViewInfo& CurrentViewInfo);
|
|
// Adjustment of FViewport::CalculateViewExtents to remove the need from the FViewport
|
|
static FIntRect CalculateViewExtents(float AspectRatio, const FIntRect& ViewRect);
|
|
|
|
protected:
|
|
// Disable the View Extension in MRQ
|
|
virtual bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext& Context) const override;
|
|
|
|
private:
|
|
UArchVisSubsystem* ArchVisSubsystem = nullptr;
|
|
};
|
|
|