refactor(srp): split universal managed pipeline assembly
This commit is contained in:
@@ -60,11 +60,16 @@ if(TARGET xcengine_managed_assemblies)
|
||||
|
||||
file(TO_CMAKE_PATH "${XCENGINE_MANAGED_OUTPUT_DIR}" XCENGINE_MANAGED_OUTPUT_DIR_CMAKE)
|
||||
file(TO_CMAKE_PATH "${XCENGINE_SCRIPT_CORE_DLL}" XCENGINE_SCRIPT_CORE_DLL_CMAKE)
|
||||
file(
|
||||
TO_CMAKE_PATH
|
||||
"${XCENGINE_RENDER_PIPELINES_UNIVERSAL_DLL}"
|
||||
XCENGINE_RENDER_PIPELINES_UNIVERSAL_DLL_CMAKE)
|
||||
file(TO_CMAKE_PATH "${XCENGINE_GAME_SCRIPTS_DLL}" XCENGINE_GAME_SCRIPTS_DLL_CMAKE)
|
||||
|
||||
target_compile_definitions(scripting_tests PRIVATE
|
||||
XCENGINE_TEST_MANAGED_OUTPUT_DIR=\"${XCENGINE_MANAGED_OUTPUT_DIR_CMAKE}\"
|
||||
XCENGINE_TEST_SCRIPT_CORE_DLL=\"${XCENGINE_SCRIPT_CORE_DLL_CMAKE}\"
|
||||
XCENGINE_TEST_RENDER_PIPELINES_UNIVERSAL_DLL=\"${XCENGINE_RENDER_PIPELINES_UNIVERSAL_DLL_CMAKE}\"
|
||||
XCENGINE_TEST_GAME_SCRIPTS_DLL=\"${XCENGINE_GAME_SCRIPTS_DLL_CMAKE}\"
|
||||
)
|
||||
endif()
|
||||
@@ -83,6 +88,10 @@ if(TARGET xcengine_test_project_managed_assemblies)
|
||||
TO_CMAKE_PATH
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}"
|
||||
XCENGINE_PROJECT_SCRIPT_CORE_DLL_CMAKE)
|
||||
file(
|
||||
TO_CMAKE_PATH
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_RENDER_PIPELINES_UNIVERSAL_DLL}"
|
||||
XCENGINE_PROJECT_RENDER_PIPELINES_UNIVERSAL_DLL_CMAKE)
|
||||
file(
|
||||
TO_CMAKE_PATH
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_GAME_SCRIPTS_DLL}"
|
||||
@@ -91,6 +100,7 @@ if(TARGET xcengine_test_project_managed_assemblies)
|
||||
target_compile_definitions(scripting_tests PRIVATE
|
||||
XCENGINE_TEST_PROJECT_MANAGED_OUTPUT_DIR=\"${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR_CMAKE}\"
|
||||
XCENGINE_TEST_PROJECT_SCRIPT_CORE_DLL=\"${XCENGINE_PROJECT_SCRIPT_CORE_DLL_CMAKE}\"
|
||||
XCENGINE_TEST_PROJECT_RENDER_PIPELINES_UNIVERSAL_DLL=\"${XCENGINE_PROJECT_RENDER_PIPELINES_UNIVERSAL_DLL_CMAKE}\"
|
||||
XCENGINE_TEST_PROJECT_GAME_SCRIPTS_DLL=\"${XCENGINE_PROJECT_GAME_SCRIPTS_DLL_CMAKE}\"
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -121,6 +121,10 @@ MonoScriptRuntime::Settings CreateMonoSettings() {
|
||||
settings.assemblyDirectory = XCENGINE_TEST_MANAGED_OUTPUT_DIR;
|
||||
settings.corlibDirectory = XCENGINE_TEST_MANAGED_OUTPUT_DIR;
|
||||
settings.coreAssemblyPath = XCENGINE_TEST_SCRIPT_CORE_DLL;
|
||||
settings.engineAssemblies.push_back(
|
||||
MonoScriptRuntime::ManagedAssemblyDescriptor{
|
||||
"XCEngine.RenderPipelines.Universal",
|
||||
XCENGINE_TEST_RENDER_PIPELINES_UNIVERSAL_DLL});
|
||||
settings.appAssemblyPath = XCENGINE_TEST_GAME_SCRIPTS_DLL;
|
||||
return settings;
|
||||
}
|
||||
@@ -240,7 +244,7 @@ TEST_F(
|
||||
classes.begin(),
|
||||
classes.end(),
|
||||
ScriptClassDescriptor{
|
||||
"XCEngine.ScriptCore",
|
||||
"XCEngine.RenderPipelines.Universal",
|
||||
"XCEngine.Rendering.FirstParty",
|
||||
"ForwardRenderPipelineAsset"}),
|
||||
classes.end());
|
||||
@@ -438,7 +442,7 @@ TEST_F(
|
||||
|
||||
const XCEngine::Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor descriptor =
|
||||
XCEngine::Rendering::Pipelines::GetConfiguredManagedRenderPipelineAssetDescriptor();
|
||||
EXPECT_EQ(descriptor.assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(descriptor.assemblyName, "XCEngine.RenderPipelines.Universal");
|
||||
EXPECT_EQ(descriptor.namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(descriptor.className, "ForwardRenderPipelineAsset");
|
||||
EXPECT_NE(descriptor.managedAssetHandle, 0u);
|
||||
@@ -773,7 +777,9 @@ TEST_F(
|
||||
const XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset*>(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(asset, nullptr);
|
||||
EXPECT_EQ(asset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(
|
||||
asset->GetDescriptor().assemblyName,
|
||||
"XCEngine.RenderPipelines.Universal");
|
||||
EXPECT_EQ(
|
||||
asset->GetDescriptor().namespaceName,
|
||||
"XCEngine.Rendering.FirstParty");
|
||||
@@ -1025,7 +1031,9 @@ TEST_F(
|
||||
const XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset*>(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(pipelineAsset, nullptr);
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().assemblyName,
|
||||
"XCEngine.RenderPipelines.Universal");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().className,
|
||||
@@ -1101,7 +1109,9 @@ TEST_F(
|
||||
const XCEngine::Rendering::Pipelines::ManagedScriptableRenderPipelineAsset*>(
|
||||
renderer.GetPipelineAsset());
|
||||
ASSERT_NE(pipelineAsset, nullptr);
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().assemblyName, "XCEngine.ScriptCore");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().assemblyName,
|
||||
"XCEngine.RenderPipelines.Universal");
|
||||
EXPECT_EQ(pipelineAsset->GetDescriptor().namespaceName, "XCEngine.Rendering.FirstParty");
|
||||
EXPECT_EQ(
|
||||
pipelineAsset->GetDescriptor().className,
|
||||
|
||||
@@ -58,11 +58,26 @@ std::filesystem::path ResolveProjectGameScriptsDllPath() {
|
||||
return ResolveProjectManagedOutputDirectory() / "GameScripts.dll";
|
||||
}
|
||||
|
||||
std::filesystem::path ResolveProjectRenderPipelinesUniversalDllPath() {
|
||||
constexpr const char* configuredPath =
|
||||
XCENGINE_TEST_PROJECT_RENDER_PIPELINES_UNIVERSAL_DLL;
|
||||
if (configuredPath[0] != '\0') {
|
||||
return std::filesystem::path(configuredPath);
|
||||
}
|
||||
|
||||
return ResolveProjectManagedOutputDirectory() /
|
||||
"XCEngine.RenderPipelines.Universal.dll";
|
||||
}
|
||||
|
||||
MonoScriptRuntime::Settings CreateProjectMonoSettings() {
|
||||
MonoScriptRuntime::Settings settings;
|
||||
settings.assemblyDirectory = ResolveProjectManagedOutputDirectory();
|
||||
settings.corlibDirectory = settings.assemblyDirectory;
|
||||
settings.coreAssemblyPath = ResolveProjectScriptCoreDllPath();
|
||||
settings.engineAssemblies.push_back(
|
||||
MonoScriptRuntime::ManagedAssemblyDescriptor{
|
||||
"XCEngine.RenderPipelines.Universal",
|
||||
ResolveProjectRenderPipelinesUniversalDllPath()});
|
||||
settings.appAssemblyPath = ResolveProjectGameScriptsDllPath();
|
||||
return settings;
|
||||
}
|
||||
@@ -71,6 +86,9 @@ class ProjectScriptAssemblyTest : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
ASSERT_TRUE(std::filesystem::exists(ResolveProjectScriptCoreDllPath()));
|
||||
ASSERT_TRUE(
|
||||
std::filesystem::exists(
|
||||
ResolveProjectRenderPipelinesUniversalDllPath()));
|
||||
ASSERT_TRUE(std::filesystem::exists(ResolveProjectGameScriptsDllPath()));
|
||||
|
||||
runtime = std::make_unique<MonoScriptRuntime>(CreateProjectMonoSettings());
|
||||
|
||||
Reference in New Issue
Block a user