载入中...
搜索中...
未找到
UnityRenderBindings.cpp
浏览该文件的文档.
11std::optional<std::string> match(const std::string& text, const std::string& pattern, unsigned group = 1) {
22 Diagnostic::error(DiagnosticCode::ParseError, "invalid Unity material scalar", name, {}, "asset.import"));
23 const auto number = parsed.value().isInt64() ? double(parsed.value().asInt()) : parsed.value().asDouble();
26 Diagnostic::error(DiagnosticCode::ParseError, "nonfinite material scalar", name, {}, "asset.import"));
53 if (!match(text, R"(m_Shader: *\{fileID: *(46), guid: *0000000000000000f000000000000000, type: *0\})"))
61 if ((mode.value() != 0 && mode.value() != 2 && mode.value() != 3) || metallic.value() < 0 || metallic.value() > 1 ||
64 DiagnosticCode::Unsupported, "Standard opaque/fade/transparent materials require normalized factors",
68 auto parsed = Value::fromJson(std::regex_replace(*value, std::regex(R"(([rgba]):)"), "\"$1\":"));
78 DiagnosticCode::ParseError, "invalid material color component", source.path, {}, "asset.import"));
97 if (mode.value() != 0) definition["blendMode"] = Value(mode.value() == 3 ? "premultiplied" : "alpha");
99 const auto guid = match(*main, R"(m_Texture: *\{fileID: *2800000, guid: *([0-9a-fA-F]{32}), type: *3\})");
103 DiagnosticCode::Unsupported, "premultiplied Standard texture alpha requires a shader conversion",
105 if (!match(*main, R"(m_Scale: *\{x: *(1), y: *1\})") || !match(*main, R"(m_Offset: *\{x: *(0), y: *0\})"))
110 request.package.packageId.child("unity:" + unity_detail::foldAscii(*guid)).child("image:default"));
127 {ref.value(), "eve.material", SchemaVersion(15), path, detail::sha256(encoded), {"material", "source:unity"}});
133 out.findings.push_back({source.path, "Material.extraProperties", ImportDisposition::Unsupported,
138Result<void> bindUnityRenderers(const UnityProjectImportRequest& request, const UnitySourceIndex& index,
149 std::distance(std::sregex_iterator(text.begin(), text.end(), submeshMarker), std::sregex_iterator()));
151 for (const auto& mapping : out.sourceMappings) mappings.emplace(mapping.sourceObject, mapping.asset);
154 const auto sceneId = detail::assetRef(request.package.packageId.child("unity-prefab:" + source.guid));
162 return Result<void>::failure(Diagnostic::error(DiagnosticCode::NotFound, "scene definition absent",
182 return Result<void>::failure(Diagnostic::error(DiagnosticCode::ParseError, "invalid scene definition",
187 Diagnostic::error(DiagnosticCode::ParseError, "invalid scene nodes", source.path, {}, "asset.import"));
212 for (std::sregex_iterator it(list->begin(), list->end(), materialPattern), end; it != end; ++it) {
233 std::find_if(out.manifest.assets.begin(), out.manifest.assets.end(), [&](const auto& candidate) {
240 const auto materialType = "eve.material/" + std::to_string(materialAsset->schemaVersion.value());
Direct Unity text-serialization adapter for TerrainData and Prefab assets.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Result< Value > fromJson(std::string_view json)
Parse one strict JSON value into an owning Value.
Definition Value.cpp:57
Id128 child(std::string_view role) const noexcept
Derives a deterministic child UUID for a hierarchical identity.
Definition Identity.h:192
Result< asset::EvaManifest > baseManifest(const ImportPackageIdentity &package, std::string_view importer)
Base manifest.
Definition ImportCommon.h:31
Definition AssetImporter.h:14
Result< PreparedAssetImport > prepareUnityMaterial(const UnityProjectImportRequest &request, const UnitySourceAsset &source)
Dispatch built-in Standard and admitted vegetation materials to canonical PBR data.
Definition UnityRenderBindings.cpp:49
Result< PreparedAssetImport > prepareUnityVegetationMaterial(const UnityProjectImportRequest &request, const UnitySourceAsset &source)
Convert admitted TVE primary material data; remaining source features are reported explicitly.
Definition UnityVegetationMaterial.cpp:423
@ Translated
@ Unsupported
Result< void > bindUnityRenderers(const UnityProjectImportRequest &request, const UnitySourceIndex &index, PreparedAssetImport &out)
Resolve renderer references after all collection assets are prepared; unpublished candidate only.
Definition UnityRenderBindings.cpp:138
@ RuntimeRequired
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
@ InvalidArgument
@ TypeMismatch
A stable reference resolved to a different canonical domain type.
@ NotFound
@ Unsupported
@ ParseError
@ Conflict
detail::StrongUint64< detail::SchemaVersionTag > SchemaVersion
Persistent data-format version; not a runtime replacement generation.
Definition SchemaVersion.h:13
std::vector< EvaDependency > dependencies
Definition EvaManifest.h:70
std::uint32_t maximumAssets
Definition AssetImporter.h:20
ImportPackageIdentity package
Definition AssetImporter.h:55
PersistentId packageId
Definition AssetImporter.h:34
Owning, validated source archive candidate not yet published to disk/database.
Definition AssetImporter.h:90
std::vector< ImportFinding > findings
Definition AssetImporter.h:93
std::vector< asset::EvaArchiveEntry > entries
Definition AssetImporter.h:92
std::vector< ImportSourceMapping > sourceMappings
Definition AssetImporter.h:94
asset::EvaManifest manifest
Definition AssetImporter.h:91
In-memory Unity project slice; keys are normalized project-relative paths.
Definition UnityImporter.h:15
Immutable-by-convention owning source index entry; no borrowed source addresses.
Definition UnitySource.h:38
Owning deterministic index sorted by path, plus missing-reference diagnostics.
Definition UnitySource.h:47