Type
Overview
Both AssimpImporter::ImportFile() and GltfImporter::ImportFile() accept an ImportProgressCallback on_progress parameter but neither implementation calls it during processing. The importer panel's progress bar remains at 0% for the entire import duration and jumps directly to 100% on completion.
Context
AssetImporterUIComponent wires OnImportProgress as the on_progress callback, which updates m_progress (read each frame by RenderImporting()). Because the callback is never invoked, the user sees no feedback during potentially long imports (large FBX, multi-material GLB).
Relevant files:
ZEngine/ZEngine/Importers/AssimpImporter.cpp — ImportFile() and AssimpProgressHandler::Update()
ZEngine/ZEngine/Importers/GltfImporter.cpp — ImportFile()
Tetragrama/Components/AssetImporterUIComponent.cpp — OnImportProgress()
AssimpImporter already has an AssimpProgressHandler class that overrides Assimp::ProgressHandler::Update(float percentage). The handler holds a pointer to the importer but does not forward the percentage to the stored on_progress callback.
What needs to be done
AssimpImporter
- Store the
on_progress callback and context pointer on AssimpProgressHandler (or on AssimpImporter as transient fields, cleared after each ImportFile call).
- In
AssimpProgressHandler::Update(float percentage), call on_progress(context, percentage) if the callback is set.
GltfImporter
- Identify logical progress milestones in
ImportFile() (e.g. after loading, after mesh extraction, after material extraction, after texture extraction, after serialization) and call on_progress(context, fraction) at each.
Testing
- Import a large FBX (> 50 MB) and verify the progress bar advances smoothly during the import.
- Import a GLB and verify the progress bar shows at least 2–3 intermediate updates before completing.
Acceptance criteria
Estimated effort
2–3 hours
Type
Overview
Both
AssimpImporter::ImportFile()andGltfImporter::ImportFile()accept anImportProgressCallback on_progressparameter but neither implementation calls it during processing. The importer panel's progress bar remains at 0% for the entire import duration and jumps directly to 100% on completion.Context
AssetImporterUIComponentwiresOnImportProgressas theon_progresscallback, which updatesm_progress(read each frame byRenderImporting()). Because the callback is never invoked, the user sees no feedback during potentially long imports (large FBX, multi-material GLB).Relevant files:
ZEngine/ZEngine/Importers/AssimpImporter.cpp—ImportFile()andAssimpProgressHandler::Update()ZEngine/ZEngine/Importers/GltfImporter.cpp—ImportFile()Tetragrama/Components/AssetImporterUIComponent.cpp—OnImportProgress()AssimpImporteralready has anAssimpProgressHandlerclass that overridesAssimp::ProgressHandler::Update(float percentage). The handler holds a pointer to the importer but does not forward the percentage to the storedon_progresscallback.What needs to be done
AssimpImporter
on_progresscallback andcontextpointer onAssimpProgressHandler(or onAssimpImporteras transient fields, cleared after eachImportFilecall).AssimpProgressHandler::Update(float percentage), callon_progress(context, percentage)if the callback is set.GltfImporter
ImportFile()(e.g. after loading, after mesh extraction, after material extraction, after texture extraction, after serialization) and callon_progress(context, fraction)at each.Testing
Acceptance criteria
AssimpImportercallson_progressviaAssimpProgressHandler::Update()during assimp processingGltfImportercallson_progressat each major processing stage[0.0, 1.0]Estimated effort
2–3 hours