//============================================================================== bool Chain::isStillChain() const { if(!isAssembled()) return false; // Make sure there are no Branches and no parent FreeJoints on the BodyNodes // on the inside of the chain for(size_t i=1; i<mBodyNodes.size()-1; ++i) { if(mBodyNodes[i]->getNumChildBodyNodes() > 1) return false; if(dynamic_cast<FreeJoint*>(mBodyNodes[i]->getParentJoint())) return false; } // Make sure there is not a FreeJoint at the final BodyNode (which was not // tested above) if(mBodyNodes.size() > 1) { if(dynamic_cast<FreeJoint*>(mBodyNodes.back()->getParentJoint())) return false; } return true; }
//============================================================================== bool Branch::isStillBranch() const { if(!isAssembled()) return false; for(std::size_t i=0; i<mBodyNodes.size(); ++i) { BodyNode* bn = mBodyNodes[i]; if(bn->getNumChildBodyNodes() != mNumChildNodes[i]) return false; } return true; }