Implement native archive and model workflows (#74)
Some checks failed
Native code generation / deterministic (push) Failing after 1m48s
Imaging and meshing gate / native (push) Successful in 5m26s
JPEG 2000 feature / linux (push) Successful in 2m51s
Native Rust workspace compile / compile (push) Successful in 5m28s
Skia feature / linux (push) Successful in 31m53s

This commit is contained in:
2026-08-10 20:31:34 +00:00
parent 763e9e5044
commit 55424dbd7f
15 changed files with 5862 additions and 2024 deletions

View File

@@ -31,6 +31,29 @@ task material uploads use their two-stage capability contracts and require a
complete response containing the new asset UUID. Upload size, cancellation, and
timeout failures remove their pending correlation state.
OAR and model workflows are native as well. The tar reader validates checksums,
ustar paths, entry kinds, offsets, counts, nesting depth, per-entry size, and
expanded size before exposing data. OAR output is sorted and uses fixed gzip and
tar metadata, so identical asset, object, terrain, parcel, and settings trees
produce identical bytes. Loading recognizes canonical `UUID_type.ext` asset
names, bounded RAW32 terrain, and typed region-settings XML. Archive paths never
escape their selected root, and symbolic or hard links are rejected.
`GltfDocument` accepts bounded JSON glTF 2.0 and GLB 2.0 documents, resolves data
URIs or caller-provided external buffers, validates buffer-view/accessor ranges,
and decodes normalized scalar, vector, matrix, skin, and animation data. JSON and
GLB output retain scenes, nodes, surfaces, materials, textures, skins, and
animations in stable order; multi-buffer GLB output aligns and rebases views.
Collada conversion applies declared units and up-axis orientation, resolves
profile-COMMON effects and material bindings, triangulates triangles/quads, and
confines referenced textures to the document directory. Mesh assets use stable
quantization and LLSD section ordering.
Model upload is deliberately opt-in. Offline resource/pricing payload generation
does no network I/O; live preparation discovers the completed capability and
inventory layers, includes real destination folders, permission masks, and the
configured cost, then honors cancellation through both pricing and upload calls.
The disk cache uses UUID-only filenames by default and confines custom filename
callbacks to the configured cache directory. Reads reject empty, oversized, or
non-regular files. Writes use uniquely named same-directory files, flush them,