diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2020-03-06 18:19:35 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2020-03-06 18:19:45 +0300 |
commit | eb522af4fec58876ac1b0a73ad9bcdae2d82d33f (patch) | |
tree | 485c6a1fb23b5be256757375e2157378d3a5c61b /source/blender/collada/GeometryExporter.h | |
parent | ff60dd8b18ed00902e5bdfd36882072db7af8735 (diff) |
Cleanup: move Alembic, AVI, Collada, and USD to `source/blender/io`
This moves the `alembic`, `avi`, `collada`, and `usd` modules into a common
`io` directory.
This also cleans up some `#include "../../{somedir}/{somefile}.h"` by
adding `../../io/{somedir}` to `CMakeLists.txt` and then just using
`#include "{somefile}.h"`.
No functional changes.
Diffstat (limited to 'source/blender/collada/GeometryExporter.h')
-rw-r--r-- | source/blender/collada/GeometryExporter.h | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/source/blender/collada/GeometryExporter.h b/source/blender/collada/GeometryExporter.h deleted file mode 100644 index 8c7a38fc407..00000000000 --- a/source/blender/collada/GeometryExporter.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -/** \file - * \ingroup collada - */ - -#ifndef __GEOMETRYEXPORTER_H__ -#define __GEOMETRYEXPORTER_H__ - -#include <string> -#include <vector> -#include <set> - -#include "COLLADASWStreamWriter.h" -#include "COLLADASWLibraryGeometries.h" -#include "COLLADASWInputList.h" - -#include "DNA_mesh_types.h" -#include "DNA_object_types.h" -#include "DNA_scene_types.h" -#include "DNA_key_types.h" - -#include "ExportSettings.h" -#include "collada_utils.h" -#include "BlenderContext.h" -#include "BKE_key.h" - -class Normal { - public: - float x; - float y; - float z; - - friend bool operator<(const Normal &, const Normal &); -}; - -bool operator<(const Normal &, const Normal &); - -/* TODO: optimize UV sets by making indexed list with duplicates removed */ -class GeometryExporter : COLLADASW::LibraryGeometries { - struct Face { - unsigned int v1, v2, v3, v4; - }; - - public: - /* TODO: optimize UV sets by making indexed list with duplicates removed */ - GeometryExporter(BlenderContext &blender_context, - COLLADASW::StreamWriter *sw, - BCExportSettings &export_settings) - : COLLADASW::LibraryGeometries(sw), - blender_context(blender_context), - export_settings(export_settings) - { - } - - void exportGeom(); - - void operator()(Object *ob); - - void createLooseEdgeList(Object *ob, Mesh *me, std::string &geom_id); - - /* powerful because it handles both cases when there is material and when there's not */ - void create_mesh_primitive_list(short material_index, - bool has_uvs, - bool has_color, - Object *ob, - Mesh *me, - std::string &geom_id, - std::vector<BCPolygonNormalsIndices> &norind); - - /* creates <source> for positions */ - void createVertsSource(std::string geom_id, Mesh *me); - - void createVertexColorSource(std::string geom_id, Mesh *me); - - std::string makeTexcoordSourceId(std::string &geom_id, int layer_index, bool is_single_layer); - - /* creates <source> for texcoords */ - void createTexcoordsSource(std::string geom_id, Mesh *me); - void createTesselatedTexcoordsSource(std::string geom_id, Mesh *me); - - /* creates <source> for normals */ - void createNormalsSource(std::string geom_id, Mesh *me, std::vector<Normal> &nor); - - void create_normals(std::vector<Normal> &nor, - std::vector<BCPolygonNormalsIndices> &ind, - Mesh *me); - - std::string getIdBySemantics(std::string geom_id, - COLLADASW::InputSemantic::Semantics type, - std::string other_suffix = ""); - std::string makeVertexColorSourceId(std::string &geom_id, char *layer_name); - - COLLADASW::URI getUrlBySemantics(std::string geom_id, - COLLADASW::InputSemantic::Semantics type, - std::string other_suffix = ""); - - COLLADASW::URI makeUrl(std::string id); - - void export_key_mesh(Object *ob, Mesh *me, KeyBlock *kb); - - private: - std::set<std::string> exportedGeometry; - BlenderContext &blender_context; - BCExportSettings &export_settings; - - Mesh *get_mesh(Scene *sce, Object *ob, int apply_modifiers); -}; - -struct GeometryFunctor { - /* f should have - * void operator()(Object *ob) */ - template<class Functor> - void forEachMeshObjectInExportSet(Scene *sce, Functor &f, LinkNode *export_set) - { - LinkNode *node; - for (node = export_set; node; node = node->next) { - Object *ob = (Object *)node->link; - if (ob->type == OB_MESH) { - f(ob); - } - } - } -}; - -#endif |