aboutsummaryrefslogtreecommitdiff
path: root/tiny_obj_loader.h
diff options
context:
space:
mode:
authorMerlyn Morgan-Graham <kavika@gmail.com>2016-10-02 00:52:19 -0700
committerMerlyn Morgan-Graham <kavika@gmail.com>2016-10-02 00:52:19 -0700
commit71cc967f422c9547c4a1eff97aa19b8d10c86a69 (patch)
tree671858c920e44e895335f56ff179b49a9f91a1f3 /tiny_obj_loader.h
parent3ddad1e377f01a0c6e2e839c88b118b8ea912124 (diff)
downloadtinyobjloader-71cc967f422c9547c4a1eff97aa19b8d10c86a69.tar.gz
Allow skipping material reads on LoadObj istream overload
Diffstat (limited to 'tiny_obj_loader.h')
-rw-r--r--tiny_obj_loader.h31
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;