From 058f98a63658dc1a2579826ba167fd61bed1e21f Mon Sep 17 00:00:00 2001 From: sanine Date: Fri, 4 Mar 2022 10:47:15 -0600 Subject: add assimp submodule --- .../code/AssetLib/Assjson/mesh_splitter.h | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/mesh/assimp-master/code/AssetLib/Assjson/mesh_splitter.h (limited to 'src/mesh/assimp-master/code/AssetLib/Assjson/mesh_splitter.h') diff --git a/src/mesh/assimp-master/code/AssetLib/Assjson/mesh_splitter.h b/src/mesh/assimp-master/code/AssetLib/Assjson/mesh_splitter.h new file mode 100644 index 0000000..f7f9a93 --- /dev/null +++ b/src/mesh/assimp-master/code/AssetLib/Assjson/mesh_splitter.h @@ -0,0 +1,52 @@ +/* +Assimp2Json +Copyright (c) 2011, Alexander C. Gessler + +Licensed under a 3-clause BSD license. See the LICENSE file for more information. + +*/ + +#ifndef INCLUDED_MESH_SPLITTER +#define INCLUDED_MESH_SPLITTER + +// ---------------------------------------------------------------------------- +// Note: this is largely based on assimp's SplitLargeMeshes_Vertex process. +// it is refactored and the coding style is slightly improved, though. +// ---------------------------------------------------------------------------- + +#include + +struct aiScene; +struct aiMesh; +struct aiNode; + +// --------------------------------------------------------------------------- +/** Splits meshes of unique vertices into meshes with no more vertices than + * a given, configurable threshold value. + */ +class MeshSplitter { +public: + unsigned int LIMIT; + + void SetLimit(unsigned int l) { + LIMIT = l; + } + + unsigned int GetLimit() const { + return LIMIT; + } + + // ------------------------------------------------------------------- + /** Executes the post processing step on the given imported data. + * At the moment a process is not supposed to fail. + * @param pScene The imported data to work at. + */ + void Execute(aiScene *pScene); + +private: + void UpdateNode(aiNode *pcNode, const std::vector> &source_mesh_map); + void SplitMesh(unsigned int index, aiMesh *mesh, std::vector> &source_mesh_map); + +}; + +#endif // INCLUDED_MESH_SPLITTER -- cgit v1.2.1