diff options
| author | Valentin Popov <valentin@popov.link> | 2026-07-18 10:20:13 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-07-18 10:20:13 +0300 |
| commit | 421c9d7aa331a28063b5efc613ac178a0cc90f41 (patch) | |
| tree | c0362bc7eb3fb9693b100898246e37b808c15bf4 /crates | |
| parent | c55d835d351c276e5f53ee190d5608dc73627d7a (diff) | |
| download | fparkan-421c9d7aa331a28063b5efc613ac178a0cc90f41.tar.xz fparkan-421c9d7aa331a28063b5efc613ac178a0cc90f41.zip | |
feat(runtime): split model asset load checkpoints
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/fparkan-assets/src/lib.rs | 9 | ||||
| -rw-r--r-- | crates/fparkan-runtime/src/lib.rs | 9 |
2 files changed, 12 insertions, 6 deletions
diff --git a/crates/fparkan-assets/src/lib.rs b/crates/fparkan-assets/src/lib.rs index 423e6ec..31f4301 100644 --- a/crates/fparkan-assets/src/lib.rs +++ b/crates/fparkan-assets/src/lib.rs @@ -458,8 +458,10 @@ pub struct AssetPreparationReport { /// Asset preparation checkpoint emitted while resolving visual dependencies. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub enum AssetPreparationPhase { - /// Decode a model and its corresponding WEAR table. - ModelAndWear, + /// Decode and validate an MSH model. + ModelMesh, + /// Decode the corresponding WEAR table. + WearTable, /// Resolve MAT0 material documents referenced by a WEAR table. Materials, /// Decode diffuse textures and baked lightmaps. @@ -1513,7 +1515,7 @@ fn prepare_visual_with_repository_internal<R: ResourceRepository>( }); }; - on_phase(AssetPreparationPhase::ModelAndWear); + on_phase(AssetPreparationPhase::ModelMesh); let model = prepare_model_cached(repository, mesh_key, preparation_cache)?; let model_id = AssetId::new((identity_policy.model)(proto)); let prepared_model = PreparedModel { @@ -1529,6 +1531,7 @@ fn prepare_visual_with_repository_internal<R: ResourceRepository>( name: wear_name, type_id: Some(WEAR_KIND), }; + on_phase(AssetPreparationPhase::WearTable); let wear = prepare_wear_cached(repository, &wear_key, preparation_cache)?; let wear_id = AssetId::new((identity_policy.wear)(proto)); let prepared_wear = PreparedWear { diff --git a/crates/fparkan-runtime/src/lib.rs b/crates/fparkan-runtime/src/lib.rs index 88b4bd1..9a35d65 100644 --- a/crates/fparkan-runtime/src/lib.rs +++ b/crates/fparkan-runtime/src/lib.rs @@ -120,8 +120,10 @@ pub enum MissionLoadPhase { GraphVisuals, /// Prepare all reachable visual/resource dependencies. Assets, - /// Decode model meshes and their WEAR tables. - AssetModels, + /// Decode and validate MSH model meshes. + AssetModelMeshes, + /// Decode WEAR material tables. + AssetWearTables, /// Resolve MAT0 material documents. AssetMaterials, /// Decode diffuse textures and baked lightmaps. @@ -707,7 +709,8 @@ fn load_mission_with_options_and_progress( let mut last_asset_phase = None; let mut observe_asset_phase = |phase| { let runtime_phase = match phase { - AssetPreparationPhase::ModelAndWear => MissionLoadPhase::AssetModels, + AssetPreparationPhase::ModelMesh => MissionLoadPhase::AssetModelMeshes, + AssetPreparationPhase::WearTable => MissionLoadPhase::AssetWearTables, AssetPreparationPhase::Materials => MissionLoadPhase::AssetMaterials, AssetPreparationPhase::Textures => MissionLoadPhase::AssetTextures, }; |
