diff --git a/src/python/magnum/test/test_trade.py b/src/python/magnum/test/test_trade.py index b9b6133..82cd98e 100644 --- a/src/python/magnum/test/test_trade.py +++ b/src/python/magnum/test/test_trade.py @@ -823,6 +823,14 @@ class MeshData(unittest.TestCase): self.assertEqual(str(b), "MeshAttribute.BITANGENT") self.assertEqual(repr(b), "") + def test_init_empty(self): + mesh = trade.MeshData(MeshPrimitive.TRIANGLES, 21) + self.assertIs(mesh.owner, None) + self.assertFalse(mesh.is_indexed) + self.assertEqual(mesh.primitive, MeshPrimitive.TRIANGLES) + self.assertEqual(mesh.vertex_count, 21) + self.assertEqual(mesh.attribute_count(), 0) + def test(self): importer = trade.ImporterManager().load_and_instantiate('GltfImporter') # This adds extra attributes for joints and weights, don't want diff --git a/src/python/magnum/trade.cpp b/src/python/magnum/trade.cpp index 60503ba..6ffd056 100644 --- a/src/python/magnum/trade.cpp +++ b/src/python/magnum/trade.cpp @@ -1072,6 +1072,9 @@ void trade(py::module_& m) { }, "Memory owner"); py::class_>{m, "MeshData", "Mesh data"} + .def(py::init([](MeshPrimitive primitive, UnsignedInt vertexCount) { + return Trade::MeshData{primitive, vertexCount}; + }), "Construct an index-less attribute-less mesh data", py::arg("primitive"), py::arg("vertex_count")) .def_property_readonly("primitive", &Trade::MeshData::primitive, "Primitive") .def_property_readonly("index_data_flags", [](const Trade::MeshData& self) { return Trade::DataFlag(Containers::enumCastUnderlyingType(self.indexDataFlags()));