refactor(rendering): retain managed pipeline asset runtime per native asset
This commit is contained in:
@@ -42,23 +42,36 @@ public:
|
||||
void ConfigureCameraFramePlan(CameraFramePlan& plan) const override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<const class ManagedRenderPipelineAssetRuntime>
|
||||
ResolveManagedAssetRuntime() const;
|
||||
|
||||
ManagedRenderPipelineAssetDescriptor m_descriptor;
|
||||
ScriptableRenderPipelineHostAsset m_fallbackAsset;
|
||||
mutable std::shared_ptr<const class ManagedRenderPipelineAssetRuntime>
|
||||
m_managedAssetRuntime = nullptr;
|
||||
};
|
||||
|
||||
class ManagedRenderPipelineAssetRuntime {
|
||||
public:
|
||||
virtual ~ManagedRenderPipelineAssetRuntime() = default;
|
||||
|
||||
virtual std::unique_ptr<RenderPipelineStageRecorder> CreateStageRecorder() const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual void ConfigureCameraFramePlan(CameraFramePlan&) const {
|
||||
}
|
||||
};
|
||||
|
||||
class ManagedRenderPipelineBridge {
|
||||
public:
|
||||
virtual ~ManagedRenderPipelineBridge() = default;
|
||||
|
||||
virtual std::unique_ptr<RenderPipelineStageRecorder> CreateStageRecorder(
|
||||
virtual std::shared_ptr<const ManagedRenderPipelineAssetRuntime>
|
||||
CreateAssetRuntime(
|
||||
const ManagedRenderPipelineAssetDescriptor&) const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual void ConfigureCameraFramePlan(
|
||||
const ManagedRenderPipelineAssetDescriptor&,
|
||||
CameraFramePlan&) const {
|
||||
}
|
||||
};
|
||||
|
||||
void SetManagedRenderPipelineBridge(
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace XCEngine {
|
||||
namespace Scripting {
|
||||
|
||||
class ScriptComponent;
|
||||
class MonoManagedRenderPipelineAssetRuntime;
|
||||
class MonoManagedRenderPipelineBridge;
|
||||
class MonoManagedRenderPipelineStageRecorder;
|
||||
|
||||
@@ -241,6 +242,7 @@ private:
|
||||
void SetError(const std::string& error);
|
||||
|
||||
friend class MonoManagedRenderPipelineBridge;
|
||||
friend class MonoManagedRenderPipelineAssetRuntime;
|
||||
friend class MonoManagedRenderPipelineStageRecorder;
|
||||
|
||||
Settings m_settings;
|
||||
|
||||
Reference in New Issue
Block a user