diff options
| author | Valentin Popov <valentin@popov.link> | 2026-07-18 07:46:16 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-07-18 07:46:16 +0300 |
| commit | b1408b0907db19033771bd03cdf1b9184250e9d6 (patch) | |
| tree | 4eb9658a0b37cbdcc5c77be371c9997d03cc2e07 /crates/fparkan-inspection/src/lib.rs | |
| parent | 4feada1bf4e2cb14f1be4f35bb789b8902e88926 (diff) | |
| download | fparkan-b1408b0907db19033771bd03cdf1b9184250e9d6.tar.xz fparkan-b1408b0907db19033771bd03cdf1b9184250e9d6.zip | |
feat(vulkan): draw original terrain geometry
Diffstat (limited to 'crates/fparkan-inspection/src/lib.rs')
| -rw-r--r-- | crates/fparkan-inspection/src/lib.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crates/fparkan-inspection/src/lib.rs b/crates/fparkan-inspection/src/lib.rs index a23baac..ff573d6 100644 --- a/crates/fparkan-inspection/src/lib.rs +++ b/crates/fparkan-inspection/src/lib.rs @@ -29,7 +29,7 @@ use fparkan_nres::{decode as decode_nres, NresDocument, ReadProfile}; use fparkan_path::{normalize_relative, PathPolicy}; use fparkan_resource::{archive_path, resource_name, CachedResourceRepository, ResourceRepository}; use fparkan_rsli::decode as decode_rsli; -use fparkan_terrain_format::{decode_land_map, decode_land_msh}; +use fparkan_terrain_format::{decode_land_map, decode_land_msh, LandMeshDocument}; use fparkan_texm::decode_texm; use fparkan_vfs::{DirectoryVfs, Vfs}; use std::fs; @@ -437,6 +437,19 @@ pub fn inspect_land_file(path: &Path, kind: LandFileKind) -> Result<MapInspectio } } +/// Loads and validates a standalone `Land.msh` file. +/// +/// # Errors +/// +/// Returns a human-readable error if the file cannot be read, decoded as `NRes`, +/// or decoded as the specialized terrain mesh format. +pub fn load_land_msh_from_path(path: &Path) -> Result<LandMeshDocument, String> { + let bytes = fs::read(path).map_err(|err| format!("{}: {err}", path.display()))?; + let document = decode_nres(Arc::from(bytes.into_boxed_slice()), ReadProfile::Compatible) + .map_err(|err| err.to_string())?; + decode_land_msh(&document).map_err(|err| err.to_string()) +} + fn inspect_land_msh(document: &NresDocument) -> Result<MapInspection, String> { let land_msh = decode_land_msh(document).map_err(|err| err.to_string())?; Ok(MapInspection { |
