RigidBodyNode* MobilizedBody::CustomImpl::createRigidBodyNode( UIndex& nextUSlot, USquaredIndex& nextUSqSlot, QIndex& nextQSlot) const { bool noX_MB = (getDefaultOutboardFrame().p() == 0 && getDefaultOutboardFrame().R() == Mat33(1)); bool noR_PF = (getDefaultInboardFrame().R() == Mat33(1)); switch (getImplementation().getImpl().getNU()) { case 1: INSTANTIATE_CUSTOM(1, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) case 2: INSTANTIATE_CUSTOM(2, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) case 3: INSTANTIATE_CUSTOM(3, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) case 4: INSTANTIATE_CUSTOM(4, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) case 5: INSTANTIATE_CUSTOM(5, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) case 6: INSTANTIATE_CUSTOM(6, getImplementation(), getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(), getDefaultOutboardFrame(), isReversed(), nextUSlot, nextUSqSlot, nextQSlot) default: assert(!"Illegal number of degrees of freedom for custom MobilizedBody"); return 0; } }
RigidBodyNode* MobilizedBody::WeldImpl::createRigidBodyNode( UIndex& nextUSlot, USquaredIndex& nextUSqSlot, QIndex& nextQSlot) const { return new RBNodeWeld( getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(),getDefaultOutboardFrame(), nextUSlot, nextUSqSlot, nextQSlot); }
// MoblizedBodyImpl::createRigidBodyNode() definitions // ///////////////////////////////////////////////////////// // These probably don't belong here. #include "MobilizedBodyImpl.h" RigidBodyNode* MobilizedBody::PinImpl::createRigidBodyNode( UIndex& nextUSlot, USquaredIndex& nextUSqSlot, QIndex& nextQSlot) const { INSTANTIATE(RBNodeTorsion, getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(),getDefaultOutboardFrame(), isReversed(), nextUSlot,nextUSqSlot,nextQSlot) } RigidBodyNode* MobilizedBody::SliderImpl::createRigidBodyNode( UIndex& nextUSlot, USquaredIndex& nextUSqSlot, QIndex& nextQSlot) const { INSTANTIATE(RBNodeSlider, getDefaultRigidBodyMassProperties(), getDefaultInboardFrame(),getDefaultOutboardFrame(), isReversed(), nextUSlot,nextUSqSlot,nextQSlot)