diff options
author | Merlyn Morgan-Graham <kavika@gmail.com> | 2016-10-02 00:52:19 -0700 |
---|---|---|
committer | Merlyn Morgan-Graham <kavika@gmail.com> | 2016-10-02 00:52:19 -0700 |
commit | 71cc967f422c9547c4a1eff97aa19b8d10c86a69 (patch) | |
tree | 671858c920e44e895335f56ff179b49a9f91a1f3 /tiny_obj_loader.h | |
parent | 3ddad1e377f01a0c6e2e839c88b118b8ea912124 (diff) | |
download | tinyobjloader-71cc967f422c9547c4a1eff97aa19b8d10c86a69.tar.gz |
Allow skipping material reads on LoadObj istream overload
Diffstat (limited to 'tiny_obj_loader.h')
-rw-r--r-- | tiny_obj_loader.h | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index 0200ff5..a7ed6ab 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -209,7 +209,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, /// Returns warning and error message into `err` bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes, std::vector<material_t> *materials, std::string *err, - std::istream *inStream, MaterialReader *readMatFn, + std::istream *inStream, MaterialReader *readMatFn = NULL, bool triangulate = true); /// Loads materials into std::map @@ -1042,7 +1042,8 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes, bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes, std::vector<material_t> *materials, std::string *err, - std::istream *inStream, MaterialReader *readMatFn, + std::istream *inStream, + MaterialReader *readMatFn /*= NULL*/, bool triangulate) { std::stringstream errss; @@ -1173,23 +1174,25 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes, // load mtl if ((0 == strncmp(token, "mtllib", 6)) && IS_SPACE((token[6]))) { - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; - token += 7; + if (readMatFn) { + char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; + token += 7; #ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); + sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); #else - sscanf(token, "%s", namebuf); + sscanf(token, "%s", namebuf); #endif - std::string err_mtl; - bool ok = (*readMatFn)(namebuf, materials, &material_map, &err_mtl); - if (err) { - (*err) += err_mtl; - } + std::string err_mtl; + bool ok = (*readMatFn)(namebuf, materials, &material_map, &err_mtl); + if (err) { + (*err) += err_mtl; + } - if (!ok) { - faceGroup.clear(); // for safety - return false; + if (!ok) { + faceGroup.clear(); // for safety + return false; + } } continue; |