From df76c324a4af9681c39d95b187562fc2220c2024 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 16 Jul 2012 13:34:56 -0700 Subject: [PATCH] Handle the MRK text string marker --- components/nifogre/ogre_nif_loader.cpp | 28 +++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index 9c0e2e10f..7a7b9e572 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -771,15 +771,33 @@ public: findTriShape(mesh, node); } - void createMeshes(Nif::Node *node, MeshPairList &meshes, int flags=0) + void createMeshes(const Nif::Node *node, MeshPairList &meshes, int flags=0) { flags |= node->flags; - // TODO: Check for extra data + Nif::ExtraPtr e = node->extra; + while(!e.empty()) + { + Nif::NiStringExtraData *sd = dynamic_cast(e.getPtr()); + if(sd != NULL) + { + // String markers may contain important information + // affecting the entire subtree of this obj + if(sd->string == "MRK") + { + // Marker objects. These are only visible in the + // editor. + flags |= 0x01; + } + } + else + warn("Unhandled extra data type "+e->recType); + e = e->extra; + } if(node->recType == Nif::RC_NiTriShape) { - NiTriShape *shape = dynamic_cast(node); + const NiTriShape *shape = dynamic_cast(node); Ogre::MeshManager &meshMgr = Ogre::MeshManager::getSingleton(); std::string fullname = mName+"@"+shape->name; @@ -804,10 +822,10 @@ public: node->recType != Nif::RC_NiRotatingParticles) warn("Unhandled mesh node type: "+node->recName); - Nif::NiNode *ninode = dynamic_cast(node); + const Nif::NiNode *ninode = dynamic_cast(node); if(ninode) { - Nif::NodeList &children = ninode->children; + const Nif::NodeList &children = ninode->children; for(size_t i = 0;i < children.length();i++) { if(!children[i].empty())