Skip to content

Commit

Permalink
Update total mass when removing bodies
Browse files Browse the repository at this point in the history
  • Loading branch information
mxgrey committed May 31, 2016
1 parent f53cb4d commit fbb6da4
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
2 changes: 2 additions & 0 deletions dart/dynamics/Skeleton.cpp
Expand Up @@ -2216,6 +2216,8 @@ void Skeleton::unregisterBodyNode(BodyNode* _oldBodyNode)
mSoftBodyNodes.end(), soft),
mSoftBodyNodes.end());
}

updateTotalMass();
}

//==============================================================================
Expand Down
10 changes: 10 additions & 0 deletions unittests/testSkeleton.cpp
Expand Up @@ -1257,6 +1257,16 @@ TEST(Skeleton, Updating)
screw->setPitch(3);
J0f = screw->getRelativeJacobian();
EXPECT_FALSE(equals(J0i, J0f));

// Regression test for Pull Request #
const double originalMass = skeleton->getMass();
BodyNode* lastBn = skeleton->getBodyNode(skeleton->getNumBodyNodes()-1);
const double removedMass = lastBn->getMass();
EXPECT_FALSE(removedMass == 0.0);
lastBn->remove();
const double newMass = skeleton->getMass();
EXPECT_FALSE(originalMass == newMass);
EXPECT_TRUE(newMass == originalMass - removedMass);
}

int main(int argc, char* argv[])
Expand Down

0 comments on commit fbb6da4

Please sign in to comment.