Fix check whether file name starts with x or X

If path doens't contains / or \, then slashpos will be 0.
Therefore slashpos + 1 = 1 doesn't point to first symbol.

xmesh.nif
 ^
 slashpos + 1
pull/457/head
elsid 7 years ago
parent b390ce3002
commit 2599aba196
No known key found for this signature in database
GPG Key ID: B845CB9FEE18AB40

@ -88,18 +88,13 @@ osg::ref_ptr<Resource::BulletShape> BulletNifLoader::load(const Nif::NIFFilePtr&
else else
{ {
bool autogenerated = hasAutoGeneratedCollision(node); bool autogenerated = hasAutoGeneratedCollision(node);
bool isAnimated = false;
// files with the name convention xmodel.nif usually have keyframes stored in a separate file xmodel.kf (see Animation::addAnimSource). // files with the name convention xmodel.nif usually have keyframes stored in a separate file xmodel.kf (see Animation::addAnimSource).
// assume all nodes in the file will be animated // assume all nodes in the file will be animated
std::string filename = nif->getFilename(); std::string filename = nif->getFilename();
size_t slashpos = filename.find_last_of("/\\"); const std::size_t slashpos = filename.find_last_of("/\\");
if (slashpos == std::string::npos) const std::size_t letterPos = slashpos == std::string::npos ? 0 : slashpos + 1;
slashpos = 0; const bool isAnimated = letterPos < filename.size() && (filename[letterPos] == 'x' || filename[letterPos] == 'X');
if (slashpos+1 < filename.size() && (filename[slashpos+1] == 'x' || filename[slashpos+1] == 'X'))
{
isAnimated = true;
}
handleNode(node, 0, autogenerated, isAnimated, autogenerated); handleNode(node, 0, autogenerated, isAnimated, autogenerated);

Loading…
Cancel
Save