Files
XCEngine/engine/src/Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.cpp

58 lines
1.7 KiB
C++
Raw Normal View History

#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
#include <utility>
namespace XCEngine {
namespace Rendering {
namespace Pipelines {
namespace {
ManagedRenderPipelineAssetDescriptor& GetManagedRenderPipelineAssetDescriptorStorage() {
static ManagedRenderPipelineAssetDescriptor s_descriptor = {};
return s_descriptor;
}
} // namespace
ManagedScriptableRenderPipelineAsset::ManagedScriptableRenderPipelineAsset(
ManagedRenderPipelineAssetDescriptor descriptor)
: m_descriptor(std::move(descriptor)) {
}
std::unique_ptr<RenderPipeline> ManagedScriptableRenderPipelineAsset::CreatePipeline() const {
return m_fallbackAsset.CreatePipeline();
}
FinalColorSettings ManagedScriptableRenderPipelineAsset::GetDefaultFinalColorSettings() const {
return m_fallbackAsset.GetDefaultFinalColorSettings();
}
void SetManagedRenderPipelineAssetDescriptor(
const ManagedRenderPipelineAssetDescriptor& descriptor) {
GetManagedRenderPipelineAssetDescriptorStorage() = descriptor;
}
void ClearManagedRenderPipelineAssetDescriptor() {
GetManagedRenderPipelineAssetDescriptorStorage() = {};
}
ManagedRenderPipelineAssetDescriptor GetManagedRenderPipelineAssetDescriptor() {
return GetManagedRenderPipelineAssetDescriptorStorage();
}
std::shared_ptr<const RenderPipelineAsset>
CreateManagedOrDefaultScriptableRenderPipelineAsset() {
const ManagedRenderPipelineAssetDescriptor descriptor =
GetManagedRenderPipelineAssetDescriptor();
if (descriptor.IsValid()) {
return std::make_shared<ManagedScriptableRenderPipelineAsset>(descriptor);
}
return std::make_shared<ScriptableRenderPipelineHostAsset>();
}
} // namespace Pipelines
} // namespace Rendering
} // namespace XCEngine