载入中...
搜索中...
未找到
EvpackTerrainMaterialLoader.cpp
浏览该文件的文档.
21 value->asString().size() > limits.maximumStringBytes || !isValidUtf8(value->asString(), Utf8NullPolicy::Reject))
36 Diagnostic::error(DiagnosticCode::ParseError, "terrain image AssetRef is invalid", std::string(name), {},
45 return Result<float>::failure(Diagnostic::error(DiagnosticCode::ParseError, "terrain number is invalid",
79 auto payload = reader_.read(material, "eve.terrain-material/3", capabilities, limits.maximumDecodedBytes);
81 payload = reader_.read(material, "eve.terrain-material/2", capabilities, limits.maximumDecodedBytes);
87 Diagnostic::error(DiagnosticCode::TypeMismatch, "terrain material cannot contain runtime bulk", {}, {},
91 Diagnostic::error(DiagnosticCode::Conflict, "terrain material has duplicate definitions", {}, {},
109 if (!schema || !schema->isString() || schema->asString() != "eve.terrain-material" || !version ||
110 !version->isInt64() || (version->asInt() != 2 && version->asInt() != 3) || !layers || layers->empty() ||
121 Diagnostic::error(DiagnosticCode::ParseError, "terrain layer must be an object", std::to_string(index),
129 if (!name || !diffuse || !normal || !weight || !convention || !tile || (!tile->isDouble() && !tile->isInt64()))
137 Diagnostic::error(DiagnosticCode::InvalidArgument, "terrain layer physical semantics are invalid",
162 metallic.value() > 1 || normalScale.value() < -8 || normalScale.value() > 8 || smoothness.value() < 0 ||
208 if (!(*controlArray)[i].isString() || (*controlArray)[i].asString().size() > limits.maximumStringBytes ||
216 return Result<LoadedTerrainMaterial>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,
226 if (!parsedHolesAsset || !controlAssetArray || controlAssetArray->size() != controlAssets.size())
228 Diagnostic::error(DiagnosticCode::ParseError, "terrain material v3 AssetRefs are incomplete", {},
Runtime canonical terrain-layer semantics.
JSON-free versioned runtime metadata codec.
Strict allocation-free UTF-8 validation.
static Result< AssetRef > parse(std::string_view text)
Parse an asset://<canonical UUID> reference.
Definition ResourceRef.cpp:20
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
double asDouble() const
Return the Double payload; the caller must have checked the kind.
Definition Value.cpp:75
std::int64_t asInt() const
Return the Int64 payload; the caller must have checked the kind.
Definition Value.cpp:69
const T * getIf() const noexcept
Return a typed pointer, or nullptr when the kind differs.
Definition Value.h:180
Result< RuntimeAssetPayload > read(const AssetRef &asset, std::string_view expectedType, const EvpackCapabilities &capabilities, std::uint64_t maximumDecodedBytes) const
Resolve, type-check, variant-select and decode a canonical runtime asset.
Definition EvpackResourceReader.cpp:10
Result< LoadedTerrainMaterial > load(const AssetRef &material, const asset::EvpackCapabilities &capabilities, const TerrainMaterialLoadLimits &limits={}) const
Decode and validate canonical layer, normal and tiling semantics transactionally.
Definition EvpackTerrainMaterialLoader.cpp:76
Result< Value > decodeRuntimeDefinition(std::span< const std::uint8_t > bytes, const RuntimeDefinitionLimits &limits)
Decode a bounded EVDEF\0\1 metadata tree without a JSON parser.
Definition RuntimeDefinition.cpp:246
@ Definition
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:26
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
@ TypeMismatch
A stable reference resolved to a different canonical domain type.
@ NotFound
@ ParseError
@ Conflict
bool isValidUtf8(std::string_view text, Utf8NullPolicy nullPolicy) noexcept
Validate shortest-form UTF-8, Unicode scalar range and optional NUL exclusion.
Definition Utf8Validation.cpp:5
@ Reject
Actual runtime device capabilities used for variant selection.
Definition Evpack.h:92
One decoded runtime chunk with its admitted semantic metadata.
Definition EvpackResourceReader.h:13
Structural and allocation limits for untrusted EVDEF metadata.
Definition RuntimeDefinition.h:17
std::uint64_t maximumBytes
Definition RuntimeDefinition.h:18
std::uint32_t maximumStringBytes
Definition RuntimeDefinition.h:21
Owning capability-selected terrain material candidate.
Definition EvpackTerrainMaterialLoader.h:44
std::vector< RuntimeTerrainLayer > layers
Definition EvpackTerrainMaterialLoader.h:46
One owning canonical terrain layer independent of its source engine.
Definition EvpackTerrainMaterialLoader.h:17
Admission budgets for terrain material definitions.
Definition EvpackTerrainMaterialLoader.h:37