Area::PathIterator Area::pathBegin() const { if (vpath.size()) { return PathIterator(*this, false, vpath); } else { vector<ConstElemIter> path; if (areaSize) { for (size_t i = 0; i < area.size(); i++) { path.push_back((area[i])->begin()); } } return PathIterator(*this, !areaSize, path); } }
Area::PathIterator Area::find(const IdentifiersType &path) const { if (path.size() != area.size()) { return pathEnd(); } if (vpath.size()) { return vpath == path ? pathBegin() : pathEnd(); } else { vector<ConstElemIter> p; for (size_t i = 0; i < area.size(); i++) { ConstElemIter it = area[i]->find(path[i]); if (it == area[i]->end()) { return pathEnd(); } p.push_back(it); } return PathIterator(*this, false, p); } }
void ModelManager::loadInternal(const boost::filesystem::path &Path) { fs::directory_iterator EndIterator; for (fs::directory_iterator PathIterator(Path); PathIterator != EndIterator; ++PathIterator) { // If the current visited path is a directory, recusively look for a model if (fs::is_directory(PathIterator->status())) { loadInternal(PathIterator->path()); } // Validates the PMX model extension else if (fs::is_regular_file(PathIterator->status()) && PathIterator->path().has_extension()) { if (boost::iequals(PathIterator->path().extension().generic_wstring(), L".pmx")) { try { auto desc = ModelLoader->getDescription(PathIterator->path().wstring()); KnownModels[desc.name.japanese] = PathIterator->path(); } catch (PMX::Loader::Exception &e) { } } } } }
Area::PathIterator Area::pathEnd() const { vector<ConstElemIter> path; return PathIterator(*this, true, path); }