载入中...
搜索中...
未找到
EvpackSceneTemplateLoader.cpp
浏览该文件的文档.
34 return value.size() == 32 && std::all_of(value.begin(), value.end(), [](unsigned char character) {
59 auto payload = reader_.read(sceneTemplate, "eve.scene-template/3", capabilities, limits.maximumDecodedBytes);
62 payload = reader_.read(sceneTemplate, "eve.scene-template/2", capabilities, limits.maximumDecodedBytes);
69 DiagnosticCode::Conflict, "scene template has duplicate definitions", {}, {}, "asset.scene.template"));
74 DiagnosticCode::NotFound, "scene template definition is missing", {}, {}, "asset.scene.template"));
87 !version->isInt64() || version->asInt() != std::int64_t(payload.value().schemaVersion.value()) ||
88 (sourceGuid && (!sourceGuid->isString() || !validGuid(sourceGuid->asString()))) || !coordinate ||
89 !coordinate->isString() || coordinate->asString() != "right-handed-x-right-y-up-minus-z-forward" || !nodes ||
92 DiagnosticCode::ParseError, "scene-template metadata is invalid", {}, {}, "asset.scene.template"));
118 Diagnostic::error(DiagnosticCode::InvalidArgument, "scene identity, rotation, or scale is invalid",
128 const float roll = gimbal ? 0.f : std::atan2(2.f * (x * y + w * z), 1.f - 2.f * (x * x + z * z));
151 DiagnosticCode::Conflict, "scene contains duplicate sourceFileId", {}, {}, "asset.scene.template"));
156 Diagnostic::error(DiagnosticCode::NotFound, "scene parent does not exist", std::to_string(id), {},
191 DiagnosticCode::Conflict, "scene hierarchy has no valid root", {}, {}, "asset.scene.template"));
208 if (!id || !id->isString() || !mesh || !mesh->isString() || !material || !material->isString() ||
222 Diagnostic::error(DiagnosticCode::ParseError, "renderer identity or reference is invalid", {}, {},
Runtime decoding of canonical scene templates.
JSON-free versioned runtime metadata codec.
Owning, renderer-independent dynamic values.
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
const std::string & asString() const
Return the string payload; the caller must have checked the kind.
Definition Value.cpp:87
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< LoadedSceneTemplate > load(const AssetRef &sceneTemplate, const asset::EvpackCapabilities &capabilities, const SceneTemplateLoadLimits &limits={}) const
Validate identities, hierarchy and finite TRS values before building a tree.
Definition EvpackSceneTemplateLoader.cpp:56
static std::optional< Id128 > parse(std::string_view text) noexcept
Parses canonical UUID text.
Definition Identity.h:151
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
@ InvalidArgument
@ TypeMismatch
A stable reference resolved to a different canonical domain type.
@ NotFound
@ ParseError
@ Conflict
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
Bounds for untrusted scene-template metadata.
Definition EvpackSceneTemplateLoader.h:12
Declarative scene-node description (build once / on dirty → flatten into SceneHost::Tree)....
Definition NodeDesc.h:19