diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index c778a8e06..360620410 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include namespace Nz @@ -27,6 +29,7 @@ namespace Nz struct NAZARA_GRAPHICS_API ModelParams : ResourceParameters { bool loadMaterials = true; + FunctionRef(const std::shared_ptr& mesh)> meshCallback = nullptr; MeshParams mesh; bool IsValid() const; diff --git a/src/Nazara/Graphics/Formats/ModelMeshLoader.cpp b/src/Nazara/Graphics/Formats/ModelMeshLoader.cpp index 9980042f9..bb7b64aa2 100644 --- a/src/Nazara/Graphics/Formats/ModelMeshLoader.cpp +++ b/src/Nazara/Graphics/Formats/ModelMeshLoader.cpp @@ -26,6 +26,13 @@ namespace Nz::Loaders if (!mesh) return Err(ResourceLoadingError::Unrecognized); + if (parameters.meshCallback) + { + Result res = parameters.meshCallback(mesh); + if (!res) + return Err(res.GetError()); + } + std::shared_ptr gfxMesh = GraphicalMesh::BuildFromMesh(*mesh); if (!gfxMesh) return Err(ResourceLoadingError::Internal);