refactor(srp): split universal managed pipeline assembly

This commit is contained in:
2026-04-19 05:03:56 +08:00
parent f45b34a03a
commit 5fa209ab5d
15 changed files with 231 additions and 44 deletions

View File

@@ -49,17 +49,34 @@ void Application::InitializeScriptingRuntime(const std::string& projectPath) {
settings.assemblyDirectory = assemblyDirectory;
settings.corlibDirectory = assemblyDirectory;
settings.coreAssemblyPath = assemblyDirectory / L"XCEngine.ScriptCore.dll";
settings.engineAssemblies.push_back(
::XCEngine::Scripting::MonoScriptRuntime::ManagedAssemblyDescriptor{
"XCEngine.RenderPipelines.Universal",
assemblyDirectory / L"XCEngine.RenderPipelines.Universal.dll"});
settings.appAssemblyPath = assemblyDirectory / L"GameScripts.dll";
std::error_code ec;
const bool hasCoreAssembly = fs::exists(settings.coreAssemblyPath, ec);
ec.clear();
bool hasEngineAssemblies = true;
for (const auto& assembly : settings.engineAssemblies) {
const bool hasAssembly = fs::exists(assembly.path, ec);
ec.clear();
hasEngineAssemblies = hasEngineAssemblies && hasAssembly;
}
const bool hasAppAssembly = fs::exists(settings.appAssemblyPath, ec);
ec.clear();
const bool hasCorlibAssembly = fs::exists(assemblyDirectory / L"mscorlib.dll", ec);
m_scriptRuntimeStatus.assembliesFound = hasCoreAssembly && hasAppAssembly && hasCorlibAssembly;
m_scriptRuntimeStatus.assembliesFound =
hasCoreAssembly &&
hasEngineAssemblies &&
hasAppAssembly &&
hasCorlibAssembly;
if (!hasCoreAssembly || !hasAppAssembly || !hasCorlibAssembly) {
if (!hasCoreAssembly ||
!hasEngineAssemblies ||
!hasAppAssembly ||
!hasCorlibAssembly) {
m_scriptRuntimeStatus.statusMessage =
"Script assemblies were not found in " + Platform::WideToUtf8(assemblyDirectory.wstring()) +
". Script class discovery is disabled until the managed assemblies are built.";