refactor(rendering): formalize pipeline selection and engine asset discovery
This commit is contained in:
@@ -133,7 +133,7 @@ protected:
|
||||
engine->SetRuntimeFixedDeltaTime(ScriptEngine::DefaultFixedDeltaTime);
|
||||
XCEngine::Input::InputManager::Get().Shutdown();
|
||||
XCEngine::Resources::ResourceManager::Get().Shutdown();
|
||||
XCEngine::Rendering::Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::ClearConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
|
||||
runtime = std::make_unique<MonoScriptRuntime>(CreateMonoSettings());
|
||||
ASSERT_TRUE(runtime->Initialize()) << runtime->GetLastError();
|
||||
@@ -145,7 +145,7 @@ protected:
|
||||
engine->OnRuntimeStop();
|
||||
engine->SetRuntime(nullptr);
|
||||
XCEngine::Input::InputManager::Get().Shutdown();
|
||||
XCEngine::Rendering::Pipelines::ClearManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::ClearConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
runtime.reset();
|
||||
scene.reset();
|
||||
XCEngine::Resources::ResourceManager::Get().Shutdown();
|
||||
@@ -235,6 +235,15 @@ TEST_F(
|
||||
return lhs.className < rhs.className;
|
||||
}));
|
||||
|
||||
EXPECT_NE(
|
||||
std::find(
|
||||
classes.begin(),
|
||||
classes.end(),
|
||||
ScriptClassDescriptor{
|
||||
"XCEngine.ScriptCore",
|
||||
"XCEngine.Rendering.FirstParty",
|
||||
"ForwardRenderPipelineAsset"}),
|
||||
classes.end());
|
||||
EXPECT_NE(
|
||||
std::find(
|
||||
classes.begin(),
|
||||
@@ -376,7 +385,7 @@ TEST_F(MonoScriptRuntimeTest, ManagedGraphicsSettingsRoundTripsRenderPipelineAss
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(descriptor.assemblyName, "GameScripts");
|
||||
EXPECT_EQ(descriptor.namespaceName, "Gameplay");
|
||||
EXPECT_EQ(descriptor.className, "RenderPipelineApiProbeAsset");
|
||||
@@ -428,9 +437,9 @@ TEST_F(
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(descriptor.assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(descriptor.namespaceName, "XCEngine");
|
||||
EXPECT_EQ(descriptor.namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(descriptor.className, "ForwardRenderPipelineAsset");
|
||||
EXPECT_NE(descriptor.managedAssetHandle, 0u);
|
||||
|
||||
@@ -448,14 +457,14 @@ TEST_F(
|
||||
selectedPipelineAssetTypeName));
|
||||
EXPECT_EQ(
|
||||
selectedPipelineAssetTypeName,
|
||||
"XCEngine.ForwardRenderPipelineAsset");
|
||||
"XCEngine.Rendering.FirstParty.ForwardRenderPipelineAsset");
|
||||
EXPECT_TRUE(runtime->TryGetFieldValue(
|
||||
script,
|
||||
"SelectedRendererDataTypeName",
|
||||
selectedRendererDataTypeName));
|
||||
EXPECT_EQ(
|
||||
selectedRendererDataTypeName,
|
||||
"XCEngine.ForwardRendererData");
|
||||
"XCEngine.Rendering.FirstParty.ForwardRendererData");
|
||||
}
|
||||
|
||||
TEST_F(
|
||||
@@ -477,7 +486,7 @@ TEST_F(
|
||||
configuredDescriptor.assemblyName = "GameScripts";
|
||||
configuredDescriptor.namespaceName = "Gameplay";
|
||||
configuredDescriptor.className = "RenderPipelineApiProbeAsset";
|
||||
XCEngine::Rendering::Pipelines::SetManagedRenderPipelineAssetDescriptor(
|
||||
XCEngine::Rendering::Pipelines::SetConfiguredManagedRenderPipelineAssetDescriptor(
|
||||
configuredDescriptor);
|
||||
|
||||
engine->OnRuntimeStart(runtimeScene);
|
||||
@@ -485,7 +494,7 @@ TEST_F(
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor
|
||||
resolvedDescriptor =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(resolvedDescriptor.assemblyName, configuredDescriptor.assemblyName);
|
||||
EXPECT_EQ(resolvedDescriptor.namespaceName, configuredDescriptor.namespaceName);
|
||||
EXPECT_EQ(resolvedDescriptor.className, configuredDescriptor.className);
|
||||
@@ -524,7 +533,7 @@ TEST_F(
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptorBeforeStop =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
ASSERT_TRUE(descriptorBeforeStop.IsValid());
|
||||
ASSERT_NE(descriptorBeforeStop.managedAssetHandle, 0u);
|
||||
ASSERT_NE(
|
||||
@@ -535,7 +544,7 @@ TEST_F(
|
||||
engine->OnRuntimeStop();
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptorAfterStop =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_FALSE(descriptorAfterStop.IsValid());
|
||||
EXPECT_EQ(descriptorAfterStop.managedAssetHandle, 0u);
|
||||
EXPECT_EQ(
|
||||
@@ -599,7 +608,7 @@ TEST_F(
|
||||
engine->OnUpdate(0.016f);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptorBeforeReplace =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
ASSERT_TRUE(descriptorBeforeReplace.IsValid());
|
||||
ASSERT_NE(descriptorBeforeReplace.managedAssetHandle, 0u);
|
||||
MonoObject* const managedAssetBeforeReplace =
|
||||
@@ -612,7 +621,7 @@ TEST_F(
|
||||
scene = std::move(secondScene);
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptorAfterReplace =
|
||||
XCEngine::Rendering::Pipelines::GetManagedRenderPipelineAssetDescriptor();
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(descriptorAfterReplace.assemblyName, descriptorBeforeReplace.assemblyName);
|
||||
EXPECT_EQ(descriptorAfterReplace.namespaceName, descriptorBeforeReplace.namespaceName);
|
||||
EXPECT_EQ(descriptorAfterReplace.className, descriptorBeforeReplace.className);
|
||||
@@ -765,7 +774,9 @@ TEST_F(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(asset, nullptr);
|
||||
EXPECT_EQ(asset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(asset->GetDescriptor().namespaceName, "XCEngine");
|
||||
EXPECT_EQ(
|
||||
asset->GetDescriptor().namespaceName,
|
||||
"XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(asset->GetDescriptor().className, "ForwardRenderPipelineAsset");
|
||||
|
||||
auto* host =
|
||||
@@ -1015,7 +1026,7 @@ TEST_F(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(pipelineAsset, nullptr);
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().className,
|
||||
"ForwardRenderPipelineAsset");
|
||||
@@ -1091,7 +1102,7 @@ TEST_F(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(pipelineAsset, nullptr);
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().className,
|
||||
"ForwardRenderPipelineAsset");
|
||||
@@ -5381,3 +5392,4 @@ TEST_F(MonoScriptRuntimeTest, DisableEnablePreservesSingleInstanceAndStartOnlyRu
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
Reference in New Issue
Block a user