From f76397e444cb798ef7b226dcc8269b30961cc56a Mon Sep 17 00:00:00 2001 From: Geoff deRosenroll Date: Tue, 16 May 2023 14:42:29 -0700 Subject: [PATCH] Add manifold_import_meshgl --- bindings/c/include/manifoldc.h | 2 ++ bindings/c/meshio.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/bindings/c/include/manifoldc.h b/bindings/c/include/manifoldc.h index 3901c6c57..2f2075c89 100644 --- a/bindings/c/include/manifoldc.h +++ b/bindings/c/include/manifoldc.h @@ -324,6 +324,8 @@ void manifold_export_options_set_material(ManifoldExportOptions *options, ManifoldMaterial *mat); void manifold_export_meshgl(const char *filename, ManifoldMeshGL *mesh, ManifoldExportOptions *options); +ManifoldMeshGL *manifold_import_meshgl(void *mem, const char *filename, + int force_cleanup); // memory size size_t manifold_manifold_size(); diff --git a/bindings/c/meshio.cpp b/bindings/c/meshio.cpp index 4334a0017..54b920f43 100644 --- a/bindings/c/meshio.cpp +++ b/bindings/c/meshio.cpp @@ -2,6 +2,8 @@ #include +#include "include/types.h" + #ifdef __cplusplus extern "C" { #endif @@ -46,6 +48,12 @@ void manifold_export_meshgl(const char *filename, ManifoldMeshGL *mesh, manifold::ExportMesh(std::string(filename), *from_c(mesh), *from_c(options)); } +ManifoldMeshGL *manifold_import_meshgl(void *mem, const char *filename, + int force_cleanup) { + auto m = manifold::ImportMesh(std::string(filename), force_cleanup); + return to_c(new (mem) manifold::MeshGL(m)); +} + // memory size size_t manifold_material_size() { return sizeof(manifold::Material); }