46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "MaterialCacheMeshProcessor.h"
|
|
#include "SceneExtensions.h"
|
|
#include "PrimitiveComponentId.h"
|
|
|
|
class FPrimitiveSceneProxy;
|
|
class IAllocatedVirtualTexture;
|
|
class UMaterialCacheStackProvider;
|
|
struct FMaterialCacheSceneExtensionData;
|
|
struct FMaterialCachePrimitiveData;
|
|
struct FMaterialCacheProviderData;
|
|
|
|
struct FMaterialCacheRegistrationOwner
|
|
{
|
|
virtual ~FMaterialCacheRegistrationOwner() { }
|
|
};
|
|
|
|
class FMaterialCacheSceneExtension : public ISceneExtension
|
|
{
|
|
DECLARE_SCENE_EXTENSION(RENDERER_API, FMaterialCacheSceneExtension);
|
|
|
|
public:
|
|
FMaterialCacheSceneExtension(FScene& InScene);
|
|
|
|
/** Get the scene proxy associated with a primitive id, nullptr if not found */
|
|
FPrimitiveSceneProxy* GetSceneProxy(FPrimitiveComponentId PrimitiveComponentId) const;
|
|
|
|
/** Get the primitive data associated with a primitive id, nullptr if not found */
|
|
FMaterialCachePrimitiveData* GetPrimitiveData(FPrimitiveComponentId PrimitiveComponentId) const;
|
|
|
|
/** Registration */
|
|
void Register(FPrimitiveComponentId PrimitiveComponentId, const FMaterialCacheProviderData& Data);
|
|
void Unregister(FPrimitiveComponentId PrimitiveComponentId);
|
|
|
|
public: /** ISceneExtension */
|
|
static bool ShouldCreateExtension(FScene& Scene);
|
|
virtual ISceneExtensionRenderer* CreateRenderer(FSceneRendererBase& InSceneRenderer, const FEngineShowFlags& EngineShowFlags) override;
|
|
virtual ISceneExtensionUpdater* CreateUpdater() override;
|
|
|
|
private:
|
|
TUniquePtr<FMaterialCacheSceneExtensionData> Data;
|
|
};
|