Cedric Pinson: Fix divide by zero when Action has 0 frames, and add a warning message because it means something wrong on input data

This commit is contained in:
Cedric Pinson
2011-02-23 22:52:01 +00:00
parent edacb776e8
commit 56a8dc7c92

View File

@@ -64,19 +64,25 @@ Action::Callback* Action::getFrameCallback(double time)
bool osgAnimation::Action::evaluateFrame(unsigned int frame, unsigned int& resultframe, unsigned int& nbloop )
{
nbloop = frame / getNumFrames();
unsigned int nbFrames = getNumFrames();
if (!nbFrames) {
nbFrames = 1;
osg::notify(osg::WARN) << "osgAnimation::Action::evaluateFrame your action " << getName() << " has 0 frames, it seems like an error in the data" << std::endl;
}
nbloop = frame / nbFrames;
resultframe = frame;
if (frame > getNumFrames()-1)
if (frame > nbFrames-1)
{
if (!getLoop())
resultframe = frame % getNumFrames();
resultframe = frame % nbFrames;
else
{
if (nbloop >= getLoop())
return false;
else
resultframe = frame % getNumFrames();
resultframe = frame % nbFrames;
}
}
return true;